我在Java 8中做一些文本编辑,我想要自动编辑的文件经常也包含遗留的格式信息,这些信息通常是这样的:
\
我希望将它们全部替换为空(所以:“”
),即使我可能可以逐个字符地阅读文本来查找文本,但我希望首先尝试使用看起来更“干净”的正则表达式。 但是:除了偶尔从StackExchange复制代码之外,我从来没有真正使用过正则表达式。
示例:
\fs14
(字号14)\RI240
(右缩进)\lang1033
(将语言应用于字符)还有例如\par
(新段落)或\I
(斜体开头)和\i0
(斜体结尾),但我可以很容易地将它们替换为OriginalString.replace(“\\par”,“”)
。 如果我不知道使用了多少和哪些数字,这显然是行不通的,就像上面的例子一样。
我知道使用模式替换文本的Java代码是:
String newString = originalString.replaceAll(pattern,"");
上面示例中处理反斜杠和文本所需的模式可能如下所示:
(\\\\fs\\\\ri\\\\lang)
。。。但是我怎么把数字和空白(如果有的话)结合起来呢?
我不确定我很好地理解了你的问题,所以这是我可以给你的一个解决方案。
\\[a-zA-Z0-9]*\s?
在这里测试一下。
从这个开始,我们有什么需要改变的,才能符合你的期望?
评论后编辑:
这一条可以匹配你喜欢的单词,后面只有2到4个数字(或者没有),如果只有反斜杠,也匹配后面的空白字符。
(\\([\bfs\b\blang\b\bri\b]*\d{2,4}\s)
在这里测试一下。