【问题标题】:Regex to get all data after certain word and between quotation marks [duplicate]正则表达式获取某个单词之后和引号之间的所有数据[重复]
【发布时间】:2016-11-06 09:38:25
【问题描述】:

我有一个包含大量数据的 xml 文件,但它还包含一个看起来像这样的 id 列表

<test test-id="014727">
<not-test not-test-id="11111">
<not-test not-test-id="22222">
<not-test not-test-id="3333">
<test test-id="019727">
<test test-id="013727">

到目前为止,我已经搜索了 test-id,它为我提供了所有数字的列表,但它并没有过滤掉其他信息。

在崇高的文本中使用正则表达式,我如何获得test-id 之后的所有数字的列表?

因此,从上面的示例中,我将有 3 行:

  1. 014727

  2. 019727

  3. 013727

【问题讨论】:

  • cmd-f, test-id, opt-enter, right-arrow, right-arrow, right-arrow, opt-shift-right-arrow, cmd-c - 所有数字都已复制到你的剪贴板
  • 来到这里阅读关于引号的内容。看到引号很失望
  • @dave 原谅我的英语:-(
  • @naomik 如果我使用 mac 会有什么不同吗?
  • @dave 这不是重复的,因为我有很多其他信息,其中包含我希望忽略的引号

标签: regex sublimetext2


【解决方案1】:

这个常规的exp。将搜索多个 test-id 属性,并在全局范围内列出匹配项:

/(?:test-id=")([^"]*)(?:")/g

【讨论】:

    【解决方案2】:

    编辑

    对原始问题进行了编辑以排除 &lt;not-test not-test-id="11111"&gt; 节点。修改下面的步骤 2,在搜索查询中的 test-id 之前添加一个空格 ()。其余步骤保持不变。


    以下击键适用于 OS X 上的 Sublime。如果有人想提供 Windows 等价物,那将很有帮助。

    1. cmd - f 进入搜索模式
    2. 输入文字test-id
    3. opt - enter 匹配当前文件中的所有结果
    4. 突出显示test-id 的每个实例,将光标向右移动 3 个字符 3
    5. opt - shift - 选择整个单词(本例为数字)
    6. cmd - c 将选中的文本复制到剪贴板
    7. 将插入符号移动到要粘贴复制数字的任何位置,然后按 cmd - v

    在上面的 gif 中,我以

    结尾
    1. cmd - a 选择所有文本
    2. cmd - v 粘贴复制的数字

    【讨论】:

    • 但如果结果超过 3 个,这将花费更长的时间,不是吗?
    • 除非您有 10,000 个结果,否则应该没问题。即使是这样,它仍然可以工作;它会很慢是的
    • 与使用正则表达式相比,这样做的全部意义在于,在 sublime 中尝试这些文本导航/操作方法非常快。试试看!
    • 这只有在你所有的 ID 有相同数量的字符时才有效
    • @dave 不。这就是为什么我选择opt-shift- 来选择整个单词。每个数字可以有不同的长度,只要长度至少为 1。
    猜你喜欢
    • 2014-09-14
    • 2015-11-08
    • 1970-01-01
    • 2019-01-07
    • 2016-04-29
    • 1970-01-01
    • 2021-12-14
    • 1970-01-01
    • 2015-08-13
    相关资源
    最近更新 更多