2012-11-19 38 views
1

给出字符串“abcdefgh”我如何匹配以“abcde”开始的所有字符串,它们不以“fgh”结尾?匹配的字符串不会以预定义部分结尾

更一般的任务 - 匹配字符串startin与某些通用模式,但不以任何预定义(排除)模式结束。

"\babcde(^fgh)\b" 

不起作用

+3

消极的前瞻应该解决这个问题。 –

回答

0

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

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

如果前缀和后缀可能重叠,如果“字符串”你的意思是“弦动先行到前面

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

“使用^$的边界条件:

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

如果你想获得这场比赛为好,而不仅仅是测试字符串,包括” STR的其余ing“到正则表达式:

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

您可以使用正则表达式:

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

,匹配以foo开始,但bar不结束所有的字符串。

的部分^foo确保字符串开头foo

(?!.*bar$)是负先行断言,以确保在字符串中bar没有结束的部分。

See it