另一个正则表达式问题:
我有一个字符串如下,
"This is a string, and I have a priority !1"
所以我想建立一个提取我的优先级的正则表达式,这个数字1前面是“!”。 提取它很容易,“!([1-4])”。但现在我想提取文本,将其删除!我怎么能这样做?
DETAIL :!1可以在字符串中的任何位置,所以这也很好:
"This is a string, !1 and I have a priority"
谢谢!
更新:我正在使用scala
答案 0 :(得分:3)
(.*?)!([1-4])(.*?)
此正则表达式使用lazy quantifiers来获得更好的性能,并为您提供三个捕获组:
你也可以在答案中使用String.replace()或Matcher.appendReplacement()之类的jarnbjo提及,但无论如何,这三组都能满足你的需要。
编辑:以下是正则表达式的正确版本:
(.*?)!([1-4])(.*)
根据评论,我使第二个量词变得贪婪,因此它与字符串的其余部分匹配。
答案 1 :(得分:3)
您可以用空字符串替换!1,!2,!3和!4:
String newString = "some string with !1 and more text".replaceAll("![1-4]", "");