假设我想匹配:
PREFIXsomething
或:
somethingPOSTFIX
但肯定不是:
PREFIXsomethingPOSTFIX
其中,某物是某种共享模式,而前缀/后缀实际上也是某种不同的模式。你知道吗
我可以(或认为)用Python解决这个问题。但是,此构造适用于“PREFIXabc”,但不适用于“abcPOSTFIX”。如何解决这个问题?你知道吗
import re
prefix_pattern = "PREFIX"
postfix_pattern = "POSTFIX"
shared_pattern = "[a-zA-z]*"
test_pattern ="("+prefix_pattern+shared_pattern+")|("+shared_pattern+postfix_pattern+")$"
pattern = re.compile(test_pattern)
#test = 'PREFIXabc' # Match
test = 'abcPOSTFIX' # No match
x = re.match(pattern,test)
if x:
print(x.group())
else:
print("Not found")
注意,当与} will get matched 。你知道吗
re.match
一起使用时,您的模式遵循类似^(alternative1)|^(alternative2)$
的模式。这意味着字符串锚定的$
端只影响第二种选择,在test = 'PREFIXabc123'
,^{根据您的需求,有两种解决方法。你知道吗
您需要删除
$
,然后在test = 'abcPOSTIFX123'
中匹配abcPOSTFIX
,或者将两个备选方案分组:然后,将再也找不到部分匹配项。你知道吗
还有,如果
prefix_pattern
、shared_pattern
和postfix_pattern
是文本字符串,不要忘记使用re.escape()
。你知道吗相关问题 更多 >
编程相关推荐