给定字符串“abcdefgh”我如何匹配以“abcde”开头的所有字符串,它们不以“fgh”结尾?
更通用的任务 - 将字符串startin与某些常见模式匹配,但不以任何预定义(排除)模式结束。
"\babcde(^fgh)\b"
不起作用
答案 0 :(得分:0)
您可以使用正则表达式:
^foo(?!.*bar$).*$
匹配以foo
开头但不以bar
结尾的所有字符串。
部分^foo
确保字符串以foo
和
部分(?!.*bar$)
是负前瞻断言,以确保字符串不会以bar
结尾。
答案 1 :(得分:0)
如果所需的前缀和排除的后缀可能不重叠,则可以使用否定前瞻。通过“字符串”,我假设你的意思是“单词”:
"\babcde(?!\w*fgh\b)"
如果前缀和后缀可能重叠,请将前瞻移到前面
"\b(?!\w*fgh\b)abcde"
如果“字符串”表示“字符串”,请使用^
和$
作为边界条件:
"^(?!.*fgh$)abcde"
如果你想获得匹配,而不是仅仅测试字符串,请将“字符串的其余部分”包含在正则表达式中:
"^(?!.*fgh$)abcde.*$"