【问题标题】:RegEx to select everything between two characters?正则表达式选择两个字符之间的所有内容?
【发布时间】:2010-07-26 14:07:24
【问题描述】:

我正在尝试编写一个选择两个字符之间所有内容的正则表达式。

例如,当正则表达式遇到'§' 时,我希望它选择'§' 符号之后的所有内容,直到正则表达式遇到';'。我尝试过向后看和向前看,但它们并没有真正做到这一点。

所以例如" § 1-2 bla; " 应该返回" 1-2 bla"

任何帮助将不胜感激!

【问题讨论】:

  • 请指定您正在使用的技术,因为正则表达式有许多“风格”,但语法和功能略有不同。
  • 等等,我第一次错过了这个......“我尝试过向后看和向前看,但他们并没有真正做到这一点。” - 为什么不?什么地方出了错?这是 JavaScript 吗?
  • 因为我是 RegEx 的新手,无法真正弄清楚。它是 Actionscript 3 中的 RegEx,它不时会做一些很奇怪的事情 :) 感谢大家的回答,我有点搞定了!

标签: regex


【解决方案1】:

怎么样

"§([^;]*);"

§; 之间的选定字符可用作匹配组 1。

【讨论】:

  • 这对我有用。但出于好奇,它也可以在没有尾随分号的情况下工作。为什么有必要?
  • 是的,尾随分号不是必需的。没有它也可以正常工作。
【解决方案2】:

使用这个正则表达式

(?<=§).*?(?=;)

【讨论】:

【解决方案3】:

对于一个简单的情况应该这样做:

§(.*);

如果您不想允许嵌套,可能需要修改:

§(.*?);

【讨论】:

  • 这不太正确 - .* 是贪婪的,所以表达式将匹配到 last ; 遇到,而不是第一个。
  • @Peter:这可能不是 OP 的问题,它可能是 OP 真正想要的。
  • 好吧,基于“直到正则表达式遇到';'”——我认为这意味着它不应该是贪婪的。
  • @Peter:根据给定的例子,量词是否贪婪并不重要。
  • 正是我需要清除一些无关的十进制值。
【解决方案4】:

如果您有多个 §(字符示例),请使用:§([^§]*)§

它会忽略两个 § 之间的所有内容,只接受两个特殊字符之间的内容,所以如果你有类似 §What§ kind of §bear§ is best 的内容,它将输出:§what§ , §bear§

发生了什么?让我们剖析表达式 § then ([^§]*) then §

  1. 1-匹配§ char
  2. 2- 匹配除 § [^§] 0 次或多次 * 以外的任何内容
  3. 匹配§字符

希望对你有帮助!

【讨论】:

    猜你喜欢
    • 2021-01-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-01
    • 2018-09-02
    • 1970-01-01
    • 2016-04-05
    • 1970-01-01
    相关资源
    最近更新 更多