【发布时间】:2020-02-14 20:50:46
【问题描述】:
我需要找到存在于一组分隔符之间的字符串中的所有匹配项。
例如,如果我有字符串The #quick# brown fox #jumped# over the lazy #dog#.,我需要匹配quick、jumped 和dog。
我应该只获得符合以下条件的匹配项:
- 不包含分隔符/(例如 quick 与 #quick#)。
- 在分隔符集之间。也就是说分隔符 1 和 2 是一个集合,分隔符 3 和 4 也是。我应该以 quick 结尾,而不是 brown fox。
这是我目前使用的正则表达式:(?<=\#)(.*?)(?=\#)。它符合我的第一个标准,但不符合我的第二个标准。
这是在 regex101.com 上的: https://regex101.com/r/bD5mo0/1/
所以我的问题是,如何让正则表达式忽略匹配 between 集?也就是说第一个和第二个分隔符匹配,第二个和第三个不匹配。
我知道将第二个定界符更改为不同于第一个定界符可以解决此问题,但我正在正则表达式的字符串来自数据库,所以我宁愿不更改它们。
【问题讨论】:
-
(?<=#)[^#\s]*(?=#)可能有效。你的正则表达式平台是什么? -
否则使用
#([^#]*)#并使用捕获组#1 -
@anubhava ...这是Javascript。
-
@anubhava ... 看起来可行。谢谢。将其添加到答案中,我会将其标记为已接受。
标签: regex