【发布时间】:2020-05-10 13:15:39
【问题描述】:
例如,我在正则表达式替换系统中有不同的正则表达式
"([e][u][r])+" = "euros"
"([e][u][r][o][s])+" = "currency"
但我想替换:
1. The longest match for all the regex occurrences if more than 2 regex are true for the same part of text
2. Just apply one time a rule for a part of text
如果我有类似这样的文字(文字不被行分割)
150,00 euros
42,00 eur
12,00 eureureuros
我有这种情况:
第一行出现两次
eur = euros (first line, match 3 characters)
euros = currency (first line, match 5 characters)
我们选择最长的(欧元=货币)
第二行,出现一次
eur = euros (second line, match 3 characters)
第三行,出现两次
eur = euros (match 9 characters)
euros = currency (match 5 characters)
结果必须是
150,00 currency (because euros = currency is the longest match)
42,00 euros (because we apply eur = euros but after that we DON'T apply euros = currency because we just apply one replacement for a part of text)
12,00 eurosos
有没有办法复制这种行为?
提前致谢!!
【问题讨论】:
-
“12,00 eureureuros”的结果究竟应该是什么。是“12,00 欧元”吗?那么“12,00 euroseuroseur”呢?
-
嗨,保罗,这是因为我们需要替换最大的规则,以防两个或多个规则与文本的某些部分重合 eur 规则比“欧元”规则匹配的时间更长。结果将是欧元