【问题标题】:Sublime Regex extract崇高的正则表达式提取物
【发布时间】:2016-08-08 10:54:55
【问题描述】:
<.*>|\n.*\s.*\sid="(\w*)".*\n+|.*>\n|\n.+

and replace $1

这个正则表达式可以从文件中取出所有的id

<a href="java" class="total" id="maker" placeholder="getTheResult('local6')">master6<a>

结果是制造者

如何提取 getTheResult 键名?

所以我的结果将是 local6

Tried   <.*>|\n.*\s.*\sgetTheResult('(\w*)').*\n+|.*>\n|\n.+ but didn't helped

【问题讨论】:

  • 不知道为什么你需要那个奇怪的正则表达式,但如果你想匹配(),你需要转义它们。 getTheResult\('(\w*\)')
  • 不要使用正则表达式解析 HTML。使用 DOM
  • @trincot 使用正则表达式进行此提取有什么问题?
  • getTheResult('(\w*)') 这不起作用
  • 我的意思是getTheResult\('(\w*)'\)(字面括号是''之外的括号)。你能提供更多的输入文件吗?我怀疑你在这里需要这么多的模式。

标签: regex sublimetext2 sublimetext3 sublimetext


【解决方案1】:

我假设:

  • 您的文件包含getTheResult('local6') 之类的文本
  • 一行中可能有多个类似的值
  • 您只想保留这些文本,每行一个值。

我建议

getTheResult\('([^']*)'\)|(?:(?!getTheResult\(')[\s\S])*

并替换为$1\n\n 将在值之间插入换行符。然后您可以使用^\n 正则表达式(替换为空字符串)删除空行。

模式详情

  • getTheResult\(' - 匹配 getTheResult(' 作为文字字符串(注意 ( 已转义)
  • ([^']*) - 第 1 组捕获除 ' 之外的 0+ 个字符
  • '\) - 文字 ')
  • | - 或
  • (?:(?!getTheResult\(')[\s\S])* - 0+ 个字符不是getTheResult(' 字符序列的起始字符(这是tempered greedy token)。

【讨论】:

    猜你喜欢
    • 2014-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多