Regex略微贪婪捕获

regex slightly greedy capture?

本文关键字:贪婪 Regex      更新时间:2023-09-26

我有以下可能性:

  1. ' !This is a string! '
  2. '!This is a string !'
  3. '! This is a string !'
  4. ' ! This is a string! '
  5. ' ! This is a string '

在所有这些情况下我都想匹配

'This is a string'

以下是我目前所做的尝试:

/'s*!(.*)!{0,1}
/'s*!(.*?)!{0,1}

但它要么吞噬!,要么根本不匹配。注意,末尾的!是可选的。

下面是我的意思

或者这个

/^'s*!'s*(.*?)'s*!?'s*$/

这个正则表达式是否适用于您的问题?

^['s!]*('w*)['s!]*$

试试这个:

('b.*'b)

它使用'b表示单词边界。

JSFiddle。

如果我假设字符串不能包含!在这种情况下,你可以这样做:

/'s*![^!]*!{0,1}/

好的,这个将保留!结尾:

/(?:^[^a-z0-9]*)(.*?)(?:'s*)$/i

在这里:http://jsfiddle.net/UAefq/4/

也有可能更新它以丢失!还有字符串末尾的空格,就像这样:

/(?:^[^a-z0-9]*)(.*?)(?:['!'s]*)$/i

您可以在这里查看结果:http://jsfiddle.net/UAefq/5/

所以我希望这完全回答了你的问题。