【问题标题】:Regex: finding a string with an undetermined amount of words正则表达式:查找单词数量不确定的字符串
【发布时间】:2011-06-06 04:29:01
【问题描述】:

我有一个类似的标签

tag="text textwithdot. text text"

后面跟着一个类似的标签

tag="text text text"

我想用下面的正则表达式

tag="\w+" 

但是只能找到一个单词,我如何在引号内找到整个字符串,用什么通配符呢?

【问题讨论】:

    标签: regex string tags grep


    【解决方案1】:

    这应该适合你:

    tag="([^"]*)"
    

    这基本上意味着tag=" 后跟零个或多个不是双引号的字符,然后是双引号。

    顺便说一句:我假设不存在包含双引号字符的标签之类的东西。如果有这样的东西,就需要应用一些转义规则,正则表达式会更复杂。

    【讨论】:

    • 这是我需要的,虽然我不需要 (),因为我没有替换它。我正在删除这些标签,但需要全部找到它们:) 谢谢
    【解决方案2】:

    另外, tag=['"]([^"]*)['"] 如果该标签可以在 ' 和 "

    之间变化

    【讨论】:

    • 那么这个输入会发生什么:tag='height 7" tall'?
    • 它将匹配tag='height 7"。如果您确实认为它可能包含引号,请使用以下匹配其中一个或另一个:tag=('([^']*)'|"([^"]*)") 将返回 tag='height 7" tall'
    【解决方案3】:

    你可以使用不贪婪的匹配一切。

    tag="[\s\S]*?"
    

    或者将.点匹配换行符 标志一起使用(假设\n 是可能的)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-02
      相关资源
      最近更新 更多