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

Restrict first and last characters to be whitespace

我想要一个正则表达式来匹配 _Hello__Hell No_

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

我试过 _[\S]+.*[\S]+_ 但是当我的文本中的字符少于 2 个时,它无法匹配,例如 _H_

请帮忙

您可以单独处理 single-character 案例:

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

您可能想将 .* 替换为 .*? 以使其成为 non-greedy。否则,您将无法连续正确匹配此模式的多个实例:

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

尝试以下模式:

_\S(.*\S)?_

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

这个怎么样:

_[^\s+]?.*[^\s+]_

在括号内使用 ^ 表示没有任何空格。
? 表示零个或其中之一(任何不是空格的字符)
.*表示任意数量的任意字符

我建议采用以下模式:

^_.+_$

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

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