提问者:小点点

用正则表达式替换文本格式信息


我在Java 8中做一些文本编辑,我想要自动编辑的文件经常也包含遗留的格式信息,这些信息通常是这样的:

  1. \
  2. 设置文本-我知道使用了哪些文本,我会将该信息提供给regex
  3. 数字(2到4位)
  4. 可能是一个空白(也应该替换)或者什么都没有

我希望将它们全部替换为空(所以:“”),即使我可能可以逐个字符地阅读文本来查找文本,但我希望首先尝试使用看起来更“干净”的正则表达式。 但是:除了偶尔从StackExchange复制代码之外,我从来没有真正使用过正则表达式。

示例:

  • \fs14(字号14)
  • \RI240(右缩进)
  • \lang1033(将语言应用于字符)

还有例如\par(新段落)或\I(斜体开头)和\i0(斜体结尾),但我可以很容易地将它们替换为OriginalString.replace(“\\par”,“”)。 如果我不知道使用了多少和哪些数字,这显然是行不通的,就像上面的例子一样。

我知道使用模式替换文本的Java代码是:

String newString = originalString.replaceAll(pattern,"");

上面示例中处理反斜杠和文本所需的模式可能如下所示:

(\\\\fs\\\\ri\\\\lang)

。。。但是我怎么把数字和空白(如果有的话)结合起来呢?


共1个答案

匿名用户

我不确定我很好地理解了你的问题,所以这是我可以给你的一个解决方案。

\\[a-zA-Z0-9]*\s?

在这里测试一下。

从这个开始,我们有什么需要改变的,才能符合你的期望?

评论后编辑:

这一条可以匹配你喜欢的单词,后面只有2到4个数字(或者没有),如果只有反斜杠,也匹配后面的空白字符。

(\\([\bfs\b\blang\b\bri\b]*\d{2,4}\s)

在这里测试一下。