【发布时间】:2022-01-17 19:21:31
【问题描述】:
我只需要删除字符之间的破折号,但我这样做的方式是我需要运行两个单独的 replaceAll 命令 - 有没有办法只用一个?它必须允许法语字符。
.replaceAll("([a-zA-ZÀ-ÿ])-([a-zA-ZÀ-ÿ])", "$1 $2")
想要的结果是这样的:
Pourquoi s'intéresse-t-elle à lui.
Ma chère je comptais là-dessus - figurez-vous.
Il y a 1-2 chemins que nous pouvons choisir.
到这里:
Pourquoi s'intéresse t elle à lui
Ma chère je comptais là dessus - figurez vous.
Il y a 1-2 chemins que nous pouvons choisir.
使用上述模式,我只能修复第二句或调整第一句,但我想用一个模式修复它们..
正则表达式匹配第一句:
https://regex101.com/r/fHQNYP/1
并匹配第二句:
【问题讨论】:
-
@user7294900 您没有链接到答案,只是链接到整个问题。无论如何,这似乎行不通。
-
@Izruo 调整为
([a-zA-ZÀ-ÿ])-([a-zA-ZÀ-ÿ])-([a-zA-ZÀ-ÿ])。这种调整使它适用于第一句话。原始模式适用于第二句。 -
@Izruo 为了清楚起见,我添加了两个正则表达式模式以匹配每个句子到我的问题中。
-
@Izruo 您的模式如何避免删除第二句中没有被字符包围的破折号?
-
@Hasen 我刚刚发现(并从模式中读取)关键的破折号在
intéresse-t-elle和là-dessus中。在我只是看到一个剩余的破折号周围有空格并因此假设它是我们正在寻找的东西之前。因此我提出的建议是错误的,我将删除我的评论。