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

Java:替换匹配正则表达式中的字符

赫连捷
2023-03-14

我有一根绳子。假设:< br> String s = "这是我的电脑..我的电脑是最好的。天啊。!检查这个……”;

我想将所有P. C.替换为PC单词和O. M. G替换为OMG。一般来说,我想替换单个字母或单个字母与空格或点之间的所有点。我认为匹配的正则表达式是:

[^A-Za-z][A-Za-z]\\.[A-Za-z\\s\\.][^A-Za-z]

我怎么能只替换那个点,而不是所有匹配的东西?

编辑:

预期产出:

"This is my PC. My PC is the best.OMG!! Check this..."

编辑2:

基本任务是从缩写和首字母缩略词中删除点,这些缩略词可以用点或不用点编写。所以一个好的正则表达式也很有价值

共有3个答案

朱兴运
2023-03-14
(?<=[A-Z])(\.)(?=[A-Z]|\.|\s)

你可以试试这个。

参见演示。

http://regex101.com/r/lK9iD2/2

谷翰飞
2023-03-14

你可以使用下面的正则表达式,它使用正向回溯来删除所有出现在大写字母后面的点,

System.out.println("This is my P.C.. My P.C. is the best.O.M.G!! Check this...".replaceAll("(?<=[A-Z])\\.", ""));

输出:

This is my PC. My PC is the best.OMG!! Check this...
翟柏
2023-03-14

您可以考虑使用正向前瞻来断言后面的内容是字母、点<代码> 或空格。

String s = "This is my P.C.. My P.C. is the best.O.M.G!! Check this...";
String r = s.replaceAll("([A-Z])\\.(?=[ A-Z.])", "$1");
System.out.println(r); //=> "This is my PC. My PC is the best.OMG!! Check this..."
 类似资料:
  • 我想匹配任何文本中的某些行,在匹配中,我想尽可能频繁地替换某个字符。示例文本: 任何文本和“更多”文本。不要在此处替换引号 CatchThis(此处没有引号,“任何更多文本”,“等等…”)。。。 现在,我想用哈希符号来替换圆括号中的每个引号。预期结果: 任何文本和“更多”文本。不要在此处替换引号 CatchThis(此处没有引号,#没有更多文本#,#等等…#)。。。 匹配线条很容易。这是我的模式:

  • 问题内容: 我有这个字符串: 现在,我想在每个数字之前添加String num:。 因此结果必须是: 这也必须工作: 用于搜索数字的正则表达式是:[0-9]+ 但是我想用num:+ [匹配的子字符串]替换匹配的子字符串。 我现在写了一个带有数字的示例,但另一个示例可以是:在每个电子邮件地址之前添加 ·Email found·: 问题答案: 利用分组。您可以使用括号(并)定义组,并通过组索引$n在哪

  • 问题内容: 当字符串以数字开头时,我需要匹配,然后是一个点,然后是一个空格和1个或多个大写字符。匹配必须发生在字符串的开头。我有以下字符串。 我尝试过的正则表达式是: 它不匹配。一个有效的正则表达式将对这个问题有什么作用? 问题答案: (对不起,我先前的错误。大脑现在坚定地投入了。嗯,也许。) 这有效: 分解: =字符串开头 =一个或多个数字 (之所以转义,是因为它在字符串中,因此) =文字(或者

  • 问题内容: 我从以下格式的文件中获取输入: 现在,我想在我的Java代码中读取int1,int2,int3和int4。我该如何在Java中使用正则表达式匹配。谢谢。 问题答案: 为了避免空值:

  • 有没有人试图描述与正则表达式匹配的正则表达式? 由于重复的关键字,这个主题几乎不可能在网上找到。 它可能在实际应用程序中不可用,因为支持正则表达式的语言通常具有解析它们的方法,我们可以将其用于验证,以及一种在代码中分隔正则表达式的方法,可用于搜索目的。 但是我仍然想知道匹配所有正则表达式的正则表达式是什么样子的。应该可以写一个。

  • 问题内容: 什么正则表达式将匹配Java中的任何ASCII字符? 我已经尝试过: 但是发现它与我想要的很多东西都不匹配(例如空格,括号等)。我希望避免以如下格式显式列出所有127个ASCII字符: 问题答案: 我没用过但是我用过