代码之家  ›  专栏  ›  技术社区  ›  flyer68

如何创建一个RegEx来匹配一个单词,前提是另一个单词出现在句子中的前面?

  •  0
  • flyer68  · 技术社区  · 13 年前

    我需要创建一个RegEx(适用于Eclipse的搜索/替换),只有在同一句话之前的任何地方出现不同的匹配时,它才会匹配一组字母。

    具体来说,我需要匹配 .css格式 仅当它出现在包含 jsSrc公司

    Eclipse不支持无限期的lookbehinds。

    示例:

    <link rel="stylesheet" type="text/css" href="<% { out.print( jsSrc( request, "/builder/builder.css" />
    

    尝试的regEx:

    \.css(?<=jsSrc)
    

    不匹配 .css格式

    2 回复  |  直到 13 年前
        1
  •  1
  •   turtledove    13 年前

    你用了后面的人 ?<= 走错路了,这是书上的样品 Mastering Regular Expression :提供字符串 see Jeffs book ,然后您替换 (?<=\b Jeff)(?=s\b) 具有 ' ,你会得到 see Jeff's book

    在您的情况下,没有必要使用lookbacking:

    jsSrc.*\.css
    

    为我工作。
    也许你只想更换 .css 放弃 XXX ,那么你可以这样做:
    在里面 Find: 字段,输入 (jsSrc.*)\.css Replace with: 字段,输入 \1XXX

        2
  •  0
  •   newfurniturey    13 年前

    您可以使用一个非常直接的正则表达式:

    jsSrc.*\.css
    

    这将匹配包含的任何行 jsSrc 之前 .css 两者之间都有文字。

    尽管问题中没有指定,但如果您想匹配行中引号内的文件路径,可以使用以下内容:

    jsSrc.*"([^"]*\.css)"