将第一个和最后一个字符限制为空格

时间:2018-03-19 02:55:06

标签: regex regex-negation regex-lookarounds regex-group regex-greedy

我希望正则表达式匹配_Hello__Hell No_

之类的内容

所以双方的要求是_,两者之间有一些文字。但是,文本不能以空格开头或以空格结尾(但它们可以在文本中包含空格)。

我已经尝试了_[\S]+.*[\S]+_,但是当文字中的字符少于2个时,这就无法匹配,例如_H_

请帮忙

4 个答案:

答案 0 :(得分:1)

尝试以下模式:

_\S(.*\S)?_

此模式允许单个非空白字符。它还允许更多的字符,但它们必须以非空白字符结尾。

答案 1 :(得分:0)

您可以单独处理单字符案例:

_(\S.*\S|\S)_

您可能希望将.*替换为.*?,以使其不贪婪。否则,您将无法正确匹配此模式的多个实例:

_foo_ _bar_
 ^^^^^^^^^
 one match

答案 2 :(得分:0)

这个怎么样:

^

在括号内使用?表示不是任何空格        .*表示零或一个(任何不是空格的字符)
    numpy表示任意数量的任何字符

答案 3 :(得分:0)

我建议采用以下模式:

^_.+_$

这将匹配前三行,但不匹配第4和第5行:

_Hello_
_Hello_Hello_
_Hello Hello_
 _Hello_
_Hello_ 
       ^---Trailing space here