【问题标题】:Regex : Everything in group except white space正则表达式:组中除空格外的所有内容
【发布时间】:2017-03-29 23:50:28
【问题描述】:

我这里有这个正则表达式:

^(@include rem\(\s*(.*)),\s*(.*)\)

匹配这个字符串:

@include rem( padding-top, $alert-padding );

我希望使用 $alert-padding 的组能够忽略末尾的空白。我试着做:

^(@include rem\(\s*(.*)),\s*(/S)\)

将 .* 替换为 /S 但不匹配。

您可以在此处使用正则表达式: https://regex101.com/r/9rouVU/1/

【问题讨论】:

  • 尝试反斜杠,而不是正斜杠\S

标签: regex


【解决方案1】:

您可以使用 \S+ 匹配 1 个或多个非空白字符:

^(@include rem\(\s*(\S+))\s*,\s*(\S+)\s*\)

regex dem0

详情

  • ^ - 字符串开头
  • (@include rem\(\s*(\S+)) - 第 1 组捕获:
    • @include rem\( - 文字子字符串 @include rem(
    • \s* - 0+ 个空格
    • (\S+) - 第 2 组捕获 1+ 个非空白符号
  • \s*,\s* - 0+ 个空格,, 和 0+ 个空格
  • (\S+) - 1+ 个非空白符号
  • \s* - 0+ 个空格
  • \) - 文字 )

【讨论】:

  • 你能详细解释一下 /S 和 /S+ 之间的区别吗?
  • 是的,\S 匹配单个非空白字符。 + 是匹配 1 次或多次出现的量化子模式的量词。所以,\S+ 匹配 1 个或多个非空白字符。
【解决方案2】:

您可以使第二组中的匹配变得惰性,然后匹配更多可选空格:

^(@include rem\(\s*(.*)),\s*(.*?)\s*\)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-24
    • 1970-01-01
    • 2015-06-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多