给出字符串“abcdefgh”我如何匹配以“abcde”开始的所有字符串,它们不以“fgh”结尾?匹配的字符串不会以预定义部分结尾
更一般的任务 - 匹配字符串startin与某些通用模式,但不以任何预定义(排除)模式结束。
"\babcde(^fgh)\b"
不起作用
给出字符串“abcdefgh”我如何匹配以“abcde”开始的所有字符串,它们不以“fgh”结尾?匹配的字符串不会以预定义部分结尾
更一般的任务 - 匹配字符串startin与某些通用模式,但不以任何预定义(排除)模式结束。
"\babcde(^fgh)\b"
不起作用
如果所需的前缀和后缀排除可能不重叠,你可以使用负前瞻。通过“串”,我假设你的意思是“字”:
"\babcde(?!\w*fgh\b)"
如果前缀和后缀可能重叠,如果“字符串”你的意思是“弦动先行到前面
"\b(?!\w*fgh\b)abcde"
“使用^
和$
的边界条件:
"^(?!.*fgh$)abcde"
如果你想获得这场比赛为好,而不仅仅是测试字符串,包括” STR的其余ing“到正则表达式:
"^(?!.*fgh$)abcde.*$"
您可以使用正则表达式:
^foo(?!.*bar$).*$
,匹配以foo
开始,但bar
不结束所有的字符串。
的部分^foo
确保字符串开头foo
和
(?!.*bar$)
是负先行断言,以确保在字符串中bar
没有结束的部分。
消极的前瞻应该解决这个问题。 –