|
1
1
最简单的方法是维护将字符串映射到替换字符串的哈希。组成匹配任何键的匹配项,并将匹配的键传递给替换部分。替换部分要比拉入值多。 在Perl中,这仅仅是:
等价的Java解决方案会像所有的东西一样长得多,但是同样的方法也会起作用。 如果一个字符串是另一个字符串的起始子字符串,则会出现排序问题。 |
|
|
2
1
根据您使用的编程语言的实际情况,您可以使用回调作为替换,并使用与这两种语言都匹配的regexp,然后在回调函数中有一个if语句,该语句检查regexp是否匹配,并将其替换为适当的替换。 |
|
|
3
1
与几乎所有其他正则表达式不同,Java不支持回调。但是,它确实公开了一些较低级别的API调用,让您自己实现它们。下面是一篇介绍如何做到这一点的文章: Java Regex Replace with Capturing Group 正如您所指出的,您需要将模式组合成一个模式,但是您还需要将每个模式隔离在其自己的捕获组中,例如:
(如果模式已经包含捕获组,这将更改编号方案;您必须调整任何回溯引用。我假设除了刚才创建的组外,没有捕获组。)
然后,在
|
|
|
4
0
正如@levu所说,这取决于编程语言。在Ruby中,您可以这样做:
当gsub在字符串s中看到“hello”或“world”时,它会将该值发送到名为match的变量中的块。该块将“您好”替换为“您好!”,并将任何其他值替换为“Universe!” |
|
|
DotFX · RegEx捕获关键字前但括号后的所有内容 1 年前 |
|
|
Andrus · 如何在sql中查找第二个匹配项 1 年前 |
|
|
iato · 确保正则表达式不从命名材料中的数字中提取 1 年前 |
|
|
vr8ce · 非成对标记中特定字符的正则表达式 1 年前 |
|
|
MARTIN · 交换第一个和最后一个单词,反转所有中间的字符 1 年前 |
|
|
Carsten · 使用最近的搜索模式更改文本块 1 年前 |