限制第一个和最后一个字符为空格
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
我想要一个正则表达式来匹配 _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