RegEx选择两个字符之间的所有内容?

Jaa*_*aaq 27 regex

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

例如,当正则表达式遇到a时,'§'我希望它在'§'符号后选择所有内容,直到正则表达式遇到a ';'.我尝试了一个lookbehind和lookahead,但他们并没有真正做到这一点.

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

任何帮助将不胜感激!

mdm*_*dma 49

怎么样

"§([^;]*);"
Run Code Online (Sandbox Code Playgroud)

§和之间的所选字符;可用作匹配组1.

  • 这对我有用。但是出于好奇,它也可以在没有尾随分号的情况下工作。为什么有必要? (2认同)
  • 是的,不需要尾随分号。没有它也能正常工作。 (2认同)

Gop*_*opi 27

使用此正则表达式

(?<=§).*?(?=;)
Run Code Online (Sandbox Code Playgroud)

  • 与JavaScript不兼容 (2认同)
  • 它与 ECMAScript 2018 及更高版本兼容。请参阅[有关在两个字符串之间匹配字符串的相关线程](/sf/answers/2854785251/)。 (2认同)

Sil*_*ost 7

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

§(.*);
Run Code Online (Sandbox Code Playgroud)

如果您不想允许嵌套,则可能需要对其进行修改:

§(.*?);
Run Code Online (Sandbox Code Playgroud)

  • 这不是很正确-`。*`是贪婪的,因此表达式将与遇到的* last *`;;匹配,而不是第一个匹配。 (3认同)

Fly*_*per 7

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

它将忽略两个 § 之间的所有内容,只获取 2 个特殊字符之间的内容,因此如果您有类似的内容§What§ kind of §bear§ is best,它将输出:§what§ , §bear§

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

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

希望能帮助到你 !