我想使用正则表达式来匹配短语的所有出现,而这些短语中没有包含某些分隔字符。我尝试将一个放在一起,但对负面的前瞻有一些困难。
我的搜索短语是"我的短语"。起始分隔符标记是[[和结束分隔符标记]]。我想要搜索的字符串是:
这是一个带有我的短语的句子,这是我不想在[[我的短语]]上匹配的另一部分。我想找到我的短语的出现。
从这个字符串我希望找到所有出现的"我的短语"除了[[]]中包含的那个。
我希望这是有道理的,提前感谢任何指导。
答案 0 :(得分:1)
[^#]my phrase[^#]
我已经找到了一个可以做你要求的RegEx,可以看到here。
字面上只是将#
作为一个字符转出,并允许返回任何其他字符。您可以返回这些结果的索引,但记得去除字符串的第一个和最后一个字符。
注意:这不会选择任何“我的短语”结束句子而后面没有字符
编辑 - 在我写这个答案时看到你改变了范围, 这是另一个分隔符的RegEx:
[^[[]my phrase[^\]\]]
答案 1 :(得分:1)
(?<=[^\[])my phrase(?=[^\]]*)
这也将消除拖尾标点符号。