javascript - 使用正则表达式查找文本并仅获取其中的一部分

标签 javascript regex

我需要找到一个带有正则表达式的文本,比如说“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)

Regular expression visualization

Debuggex Demo

我们的排除上下文延迟匹配括号内的任何内容,否则我们捕获该上下文之外的所有 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/

相关文章:

javascript - 从多选 jQuery UI 小部件动态添加复选框

javascript - Firebase.存储: uploading file from React form

regex - R将4个字符串合并为1个字符串

python - 对 python 中正则表达式匹配的唯一值进行排序

javascript - 悬停后 vbox 关闭的 menupopup(Firefox 扩展)

javascript - Mongoose + Node.js : Async issue

php - 如何使用 ajax 将数组从 php 返回到 javascript

java - 在 Spring 中将正则表达式查询与 hibernate 一起使用

jquery - 正则表达式惰性量词表现得贪婪

python - 删除罗马数字