我正在寻找特定正则表达式的帮助:(THE_WORD_I_WANT_TO_FIND)[^.?!\w]+([^.?!\s]+[^.?!\w]+){0,NUMBER_OF_WORDS}(MY_WORD_AT_END)
要解释一下,我正在寻找另一个词之前的特定词。我有一些条件,我想界定WORD_AT_END所在的句子以及之前的特定数字。
这个正则表达式完成了这项工作,但我想添加一个句子分隔符:(\s\-\s)
(除了。?!)。
示例:
Blablabla. A full Reference - Help is available in the Library, or watch the video Tutorial.
正则表达式:(Help)[^.?!\w]+([^.?!\s]+[^.?!\w]+){0,}(watch)
匹配且(Reference)[^.?!\w]+([^.?!\s]+[^.?!\w]+){0,}(watch)
必须匹配...
你能帮我吗?
谢谢!
解决方案(感谢@MostafaHussein):
(Help)((?!\s-\s)\s(([\w|\w-|\pL|\pL-])+(?!\s-\s)\s+){0,})?(watch)
这里,
-
是句子分隔符,如果它被两个空格包围。
答案 0 :(得分:2)
以下正则表达式:
(Help)\s(?!-)(?s).+?(watch)
仅匹配:
Help is available in the Library, or watch
而不是:
Reference - Help is available in the Library, or watch
因为在指定的第一个单词后跟一个空格后会找到-
,例如Reference -
更新
这个正则表达式将匹配任何句子,只要它不包含-
(它必须被白色空格包围)
Help((?!\s-\s)\s(([\w|\w-|\pL|\pL-])+\s+){0,7})?watch
注意:在watch
之前必须有正好7个单词而不计算Help
如果有-
被空格包围则没有任何匹配,也考虑了unicode字母字符如果有ê
之类的内容将被正确匹配。