4
|
polygenelubricants · 技术社区 · 15 年前 |
![]() |
1
5
在进行真正的匹配之前,可以使用lookahead来“锁定”组号。
|
![]() |
2
3
在preg(Perl Regex库)中,这将匹配您的示例,并且
它取决于条件运算符
更新 另外,对于你的阑尾(即使它是错误的方言):
这个名字又出现了
|
![]() |
3
3
我能想到的唯一解决办法是,用不同的交替方式捕捉空字符串的技术;稍后对这些组的反向引用可以用作伪条件。 因此,此模式适用于第二个示例( as seen on rubular.com
所以本质上,对于每个开始的括号,我们分配一个组来捕获一个空字符串。然后,当我们尝试匹配右括号时,我们会看到哪个组成功,并匹配相应的右括号。 “main”部分不必重复,但在Java中,backreference可能需要重新编号。这在支持命名组的风格中不会是问题。 |
![]() |
4
0
|
![]() |
5
0
当你遇到这样的情况时,使用一个regex是一个愚蠢的限制,我根本不同意你使用多个regex的“维护噩梦”——重复几次类似但不同的表达式很可能是错误的 更多 与一个过于复杂的正则表达式相比,它是可维护的(好吧,不那么不可维护),甚至可能有更好的性能。
下面是一些伪代码:
|
![]() |
6
0
您可以有一个函数,可能如下所示(我在这里使用C#语法,因为我在这里比在Java中更熟悉regex,但将其改编为Java应该不会太困难)。 请注意,我或多或少没有实现AdaptBackreferences()函数 作为对读者的练习 . 它应该调整反向引用编号。
|
![]() |
DotFX · RegEx捕获关键字前但括号后的所有内容 7 月前 |
![]() |
Andrus · 如何在sql中查找第二个匹配项 8 月前 |
![]() |
iato · 确保正则表达式不从命名材料中的数字中提取 8 月前 |
![]() |
vr8ce · 非成对标记中特定字符的正则表达式 8 月前 |
![]() |
MARTIN · 交换第一个和最后一个单词,反转所有中间的字符 8 月前 |
![]() |
Carsten · 使用最近的搜索模式更改文本块 8 月前 |