【问题标题】:regex to ignore lines with specific symbol正则表达式忽略具有特定符号的行
【发布时间】:2017-12-07 11:43:30
【问题描述】:

我正在尝试获取一个正则表达式,以使用别名将相对路径更改为绝对路径,并忽略任何已用 @ 符号指示的别名行,以防止文件夹/文件名匹配。我已经做到了 replace 和 match ,但我不能用 @bit 做忽略行。我还希望它在选择时匹配 /foldername/ 两边的正斜杠。

https://regex101.com/r/vRUegE/1/

我原以为 @ 的行会被忽略

感谢 Wiktor,这是正确的回复:

Working example

使用WinGrep 和这些正则表达式的组合,很容易在几分钟内重构数百个文件中的数百个路径!

【问题讨论】:

    标签: regex relative-path regex-lookarounds absolute-path


    【解决方案1】:

    您可以在积极的后视后添加negative lookahead (?!@)

    (?<=from..)(?!@)(.*)(?=module)(.*)(module)
               ^^^^^
    

    this regex demo。一旦在from 之后找到@ 以及紧随其右侧的任意2 个字符,(?!@) 将失败。

    请注意,正则表达式可能需要进一步调整,因为 (?=module) 在这里没有多大意义。你不妨使用(?&lt;=from..)(?!@)(.*)(module)

    【讨论】:

    • 感谢维克托。到目前为止,我已经确定 (?
    • 抱歉,要忽略的示例路径是什么? import { service9 } from ".23455./module/8.service";?试试(?&lt;=from..)(?!@)([\/.]*)(\/module\/)
    • 例如:import { service11 } from "dontinclude/../module/11.service";如果 dontinclude 是 .. 就可以了
    • Perfect Wiktor link Reg Ex: (?
    • 我这里有一个类似的小问题,不能让它忽略某行:Reg ex not ignoring spec files
    【解决方案2】:

    很难说你是用哪种语言做的,似乎 java ,regexp 对于不同的语言有点不同。

    (?<=from..)(.*)(?=module)(.*(module)/g
    

    这里指的是 (.*) - e.q.任何重复字符,您需要更改为

    ([^\@]*)  ( or ([^@]*)   )
    

    e.q.任何非@char

    【讨论】:

      猜你喜欢
      • 2014-03-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-02
      • 1970-01-01
      相关资源
      最近更新 更多