【问题标题】:Regex string with three wildcards, replace with second and third only带有三个通配符的正则表达式字符串,仅替换为第二个和第三个
【发布时间】:2014-04-22 20:54:00
【问题描述】:

我的代码中有多个 <li>,其中超过 3,000 个(不要问!)。

它们都采用以下格式:

<li>Name, Job, Company</li>

<li>Job, Company</li>

我需要找到包含 Name 的那些(即带有两个逗号 , 的那些,而不是只有一个),然后删除名称。我希望使用 Sublime Text 的 Regex 查找+替换功能。

现在,我可以使用以下正则表达式选择所有包含两个逗号的行:

<li>.*,.*,.*</li>

但是我现在如何用第二个和第三个.*s 替换那些,丢弃第一个?

【问题讨论】:

  • 在正则表达式中使用捕获组,在替换中使用反向引用。

标签: html regex sublimetext


【解决方案1】:

找到这个:

<li>.*,(.*),(.*)</li>

替换为:

<li>\1,\2</li>

<li>$1,$2</li>

无论你的编辑器支持什么

【讨论】:

  • 捕获组...今晚完美的轻松阅读,感谢您的回答!
  • @MatthewPeckham 很高兴它帮助了你:)
【解决方案2】:
sed -r 's/[^,]*,([^,]*,[^,]*)/\1/g'

不是 .*,因为它会匹配逗号。

【讨论】:

    猜你喜欢
    • 2021-04-09
    • 1970-01-01
    • 2011-03-29
    • 1970-01-01
    • 2021-02-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多