匹配的正则表达式在文本之间不包含空格?

时间:2010-06-11 06:57:02

标签: regex string

我正在寻找匹配的正则表达式,它在文本之间不包含空格,但在文本的开头或结尾可能有也可能没有空格。

3 个答案:

答案 0 :(得分:15)

你想要这样的东西:(see it in action on rubular.com):

^\s*\S+\s*$

说明:

  • ^是字符串锚
  • 的开头
  • $是字符串锚
  • 的结尾
  • \s是空格的字符类
  • \S是对\s的否定(请注意大小写差异)
  • *是“零或多”重复
  • +是“一次或多次”重复

参考


“文本”部分可以为空吗?

上面的模式 NOT 匹配,比方说是一个空字符串。如果这是预期的行为,原始规范不是很清楚,但如果允许空的“文本”,则只需使用\S*,即匹配 - 或更多(而不是一次 - 或者更多 - 重复\S

因此,此模式(与*除外,与+相同而不是^\s*\S*\s*$

\S

将匹配:

  • 空字符串(即长度为0的字符串)
  • 非空字符串,只包含空格字符

什么算作“文字”字符?

上述模式使用" #@^$^* "来定义“文本”字符,即除了空格之外的任何字符。这包括标点符号和符号之类的内容,即字符串" ==== AWESOMENESS ==== "匹配两种模式。目前尚不清楚这是否是所需的行为,即/^[^a-z]*[a-z]*[^a-z]*$/i 可能是理想的匹配

即使对于这种情况,模式仍然有效,我们只需要更具体地使用我们的字符类定义。

例如,这种模式:

 ==== AWESOMENESS ====

匹配(as seen on rubular.com):

 ==== NOT AWESOME ==== 

但不是:

^

请注意,/i元字符在用作字符类定义中的第一个字符时,不再意味着字符串锚点的开头,而是意味着字符类的否定定义

还要注意在模式中使用(?i)修饰符:这会启用不区分大小写的匹配。实际语法可能因语言/口味而异。

参考

答案 1 :(得分:2)

刚发现自己回答。所以我在这里写它,这样对其他人可能会有所帮助。
^\s*\S*\s*$

答案 2 :(得分:1)

这应该这样做:

^\s*\S+\s*$
  • " aaadadadad " =>匹配
  • " aaa aaaaa " =>