【问题标题】:Regex capture group between two non groups两个非组之间的正则表达式捕获组
【发布时间】:2020-09-22 07:34:09
【问题描述】:

已更新我正在尝试匹配两个非捕获组之间的所有 ['ta] 字符(静态 xml):

示例 xml

<Monkey xmlns="http://urlhere.com/monkeynamespace">
 <foodType>
  <vegtables>
   <carrots>i don't like carrots, or tomatoes</carrots>
  </vegtables>
 <foodType>   
</Monkey>

还有我的正则表达式

/(?:(&lt;.*?&gt;))(['ta])(?:(&lt;\/.*?&gt;))/gm

有什么想法吗?似乎那个正则表达式变得懒惰。

【问题讨论】:

  • 如果xml是动态的;我会推荐使用解析器。否则; this 有帮助吗?
  • 你没有考虑到'“我不”和“不喜欢胡萝卜”周围的任何其他字符
  • You should not match XML with regexes 除非它已生成并且您完全了解该生成器的功能。给定&lt;vegetables color='orange'&gt;&lt;carrots&gt;i don't like carrots&lt;/carrots&gt;&lt;/vegetables&gt; 会发生什么?
  • @Mandy8055 不错,但由于某种原因它很懒惰。我无法修改它来捕获c,就像这样['c]
  • 您是否尝试匹配标签值?例如i don't like carrots 来自&lt;carrots&gt;i don't like carrots&lt;/carrots&gt;?你编码['ta]时的意图是什么?

标签: javascript regex


【解决方案1】:

试试这个:

['ta](?=[^<>]*<)

live demo

它不是防弹的,但适用于您的示例并且适用于典型的 xml。

只有当输入中的 next 尖括号是 left 尖括号时,它才会匹配 ['ta]

【讨论】:

    猜你喜欢
    • 2018-09-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-17
    • 2019-01-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多