当前位置: 首页 > 知识库问答 >
问题:

Regex flexible仅删除字符之间的破折号

陶超
2023-03-14

我只需要删除字符之间的破折号,但按照我的方式,我需要运行两个单独的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.

按照上面的模式,我只能修改第二个句子,或者修改第一个句子,但是我想用一个模式来修改它们。。

regex匹配第一句:

https://regex101.com/r/fHQNYP/1

与第二句相匹配:

https://regex101.com/r/j4YGrj/1

共有3个答案

花飞扬
2023-03-14

这是替换所有破折号的正则表达式。

stringValue.replaceAll("[-]", " ")

这是用来替换单词之间的破折号。

stringValue.replaceAll("(\\b-\\b)", " ")
松阳泽
2023-03-14

这是一个棘手的问题。一方面,需要指定所有重音字符。您不能使用\w,因为这将只包括非重音符号。尽管如此,具有类似于-t-的模式意味着第二个字符必须声明为零宽度。

所以,我认为这可以解决两个问题:

"Pourquoi s'intéresse-t-elle à lui. Ma chère je comptais là-dessus - figurez-vous."
.replaceAll("([a-zA-Z\\u00C0-\\u017F])-((?=[a-zA-Z\\u00C0-\\u017F]))", "$1 $2");
宿鹏程
2023-03-14

您不能在t字的两端匹配连字符,因为正则表达式中的尾随([a-zA-ZÀ-ÿ])消耗了t,并且正则表达式无法在下一个迭代。看一看:

Pourquoi s'intéresse-t-elle à lui.
                    ^^^
                      First match (replace with " t ")

Pourquoi s'intéresse-t-elle à lui.
                       ^
                       +-- search goes on from here, no more matches!

您只希望在字母之间匹配连字符,因此请使用

.replaceAll("(?<=\\p{L})-(?=\\p{L})", " ")

请参阅regex演示。细节:

  • (?

 类似资料:
  • 我只需要删除特定字符之间的一些空格。这是我的数据: 我希望删除两个##标签之间的所有空白,这些空白除了数字之外没有任何其他分隔。我的数据应该如下所示: 我目前正在尝试在PHP中使用以下正则表达式来preg_replace这些空格,但是,我尝试过的所有内容都失败了。 调试演示

  • 问题内容: 我有这样的java字符串: 我想删除标签。我还有一些其他字符串,其中标签的长度更长,因此我想找到一种方法来删除“ <>”字符之间的所有内容,包括那些字符。 一种方法是使用将字符串与regEx进行比较的内置字符串方法,但是我不知道如何编写它们。 问题答案: 注意使用正则表达式时,解析HTML(由于其允许的复杂性),但是,对于“简单” HTML,以及简单的文本(文本没有字面建议或它)这将工

  • 问题内容: 我想删除两个字符之间以及字符本身之间的字符串,例如说: 我想替换“#?”之间所有出现的字符串 和“;” 并用字符将其删除。 由此 对此 我怎么能用Java做到呢? 问题答案: 使用正则表达式:

  • 问题内容: 我对此感兴趣 ,它将在给定的$ string中搜索$ char1和$ char2,如果找到了该字符串,则从这两个字符之间的子字符串中清除$ string, 包括 $ char1和$ char2本身。 例: 现在,$ string应该只包含 有人有快速解决方案吗? 问题答案:

  • 我正在尝试编写一个正则表达式,允许数字和字符之间使用连字符(-),但删除字符之间的连字符,并用PHP字符串中的空格替换它。我是正则表达式的初学者,不知道如何编写正则表达式,有人能帮我吗 这里我需要的是一个类似于PHP的字符串 在应用正则表达式后,我需要的输出必须是这样的 还有其他方法吗?请帮忙

  • 问题内容: 我有一串琴弦,其中一些琴弦。我只想删除最后四个字符。 换句话说,我有 我希望它成为 Python处理此问题的方法是什么? 问题答案: