我需要找到一个带有正则表达式的文本,比如说“andres”,但它不能在 []
例如,如果文本是:
s = 'andres [andres andres] andres [andres] andresX andres'
我应该得到第一个、第四个、第六个和最后一个,其他人至少有一个[]
,所以它们不匹配。
我尝试过这个:
"[^\[]andres[^\]]"
更好的例子http://jsfiddle.net/aras7/5j3UM/8/
但是它不起作用。
最佳答案
有一个有用的模式可以在正则表达式中执行此类操作:
exclusion_context1|exclusion_context2|...|(stuff_you_want)
您可以在其中指定任意数量的排除上下文,最后在捕获组中捕获您想要的内容。我可以进一步解释,但实际上我只会 link you to this answer这对上述模式进行了深入的探讨。
那么,那么:
\[.*?\]|(andres)
我们的排除上下文延迟匹配括号内的任何内容,否则我们捕获该上下文之外的所有 andres
。
因为我刚刚注意到您想要匹配的位置,所以它在 python 中可能看起来像这样:
for m in re.finditer(r'\[.*?\]|(andres)', s):
if m.group(1):
print('{}: {}'.format(m.start(),m.group()))
0: andres
23: andres
39: andres
47: andres
关于javascript - 使用正则表达式查找文本并仅获取其中的一部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23662237/