1

给定字符串“abcdefgh”我如何匹配所有以“abcde”开头的字符串,其不以“fgh”结尾?

更通用的任务 - 匹配以某些常见模式开头但不以任何预定义(排除)模式结尾的字符串。

"\babcde(^fgh)\b" 

不工作

4

2 回答 2

0

您可以使用正则表达式:

^foo(?!.*bar$).*$

匹配所有以 . 开头foo但不以 . 结尾的字符串bar

该部分^foo确保字符串以foo和开头

该部分(?!.*bar$)是否定的前瞻断言,以确保字符串不以bar.

看见

于 2012-11-19T11:31:37.400 回答
0

如果所需的前缀和排除的后缀可能不重叠,则可以使用负前瞻。通过“字符串”,我假设您的意思是“单词”:

"\babcde(?!\w*fgh\b)"

如果前缀和后缀可能重叠,则将前瞻移到前面

"\b(?!\w*fgh\b)abcde"

如果“字符串”是指“字符串”,则使用^and$作为边界条件:

"^(?!.*fgh$)abcde"

如果您也想获得匹配,而不仅仅是测试字符串,请将“字符串的其余部分”包含到正则表达式中:

"^(?!.*fgh$)abcde.*$"
于 2012-11-19T11:36:02.923 回答