【问题标题】:Space or no space空间或没有空间
【发布时间】:2013-09-13 03:56:07
【问题描述】:

我的正则表达式的一部分是:/<a .*?(" "|"")(href)。在(" "|"") 中,我想说匹配空格或没有空格,但我无法从中得到任何东西。我也试过("\s"|""),但没有结果。

【问题讨论】:

  • 你想完全匹配什么?请提供一些输入字符串和所需的输出字符串。
  • 你为什么不用\s?
  • 在您给出的示例模式中,您是明确希望匹配引号字符,还是尝试使用 " " 表示单个空格?

标签: regex


【解决方案1】:

“空格或无空格”与“零个或一个空格”或“零个或多个空格”相同,我不确定您想要什么。

在下面的讨论中,我将使用<space> 来表示单个空格,因为在短代码sn-ps 中很难看到单个空格。在实际的正则表达式中,必须使用实际的空格字符。

零或一个空格表示为一个空格,后跟一个问号 (<space>?)。这将完全匹配零个或一个空格。如果要匹配零个或任意数量的空格,请将? 替换为*(例如:<space>*

如果“空格”实际上是指“任何空白字符”(例如,制表符),您可以使用大多数正则表达式引擎将其翻译为空格的\s。因此,任何空白字符的零个或一个将是\s?,零个或多个将是\s*

【讨论】:

  • 请注意,您 (@ImTryinl) 可能对 .*? 有另一个问题。
  • “一个空格或没有空格”是`?`,这就是我想象的OP真正想要的。所以/<a .*? ?(href) 表示整个表达式。
  • 我明白你的逻辑,但这仍然不起作用。与您的/<a .*? *(href) 解决方案相比,它仅在我实际放入空格(即/<a .*?<space>(href))时才有效,并且“”实际上是指空格字符。
  • @ImTryinl:您能否更新您的问题以显示您想要匹配的行的示例? <space>* 应该在 <space> 工作的任何地方工作,所以肯定有其他事情发生。您能否更新您的问题以显示您使用的语言?
【解决方案2】:

spaceno-space 问题的其他替代方案(注意某些开头的空格):

[ ]{0,1}
 {0,1}
[ ]?
 ?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-04-06
    • 2011-08-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-07
    相关资源
    最近更新 更多