【发布时间】:2019-10-08 17:25:03
【问题描述】:
我试图从文本中的引号中删除所有[.!?],这样做,我想首先使用正则表达式捕获我的所有引号,包括[.!?],然后再删除它们。
我的正则表达式不起作用,可能是因为它太贪心了。它从我的“«”(索引 569 处的字符)到最后一个字符,即另一个“»”(索引 2730 处的字符)。
我的正则表达式是:
Pattern full=Pattern.compile("«.*[.!?].*?»");
Matcher mFull = full.matcher(result);
while(mFull.find()){
System.out.println(mFull.start()+" "+mFull.end());
}
所以我得到了:
569 2731
同样,贪婪的问题,捕捉句子(以任何 [A-Z] 开头并以任何 [.!?] 结尾。
【问题讨论】:
-
为了有人帮助你,我建议你发布输入字符串和所需的输出。
-
你一定在寻找类似
s.replaceAll("(\\G(?!^)|«)([^«».!?]*)[.!?](?=[^«»]*»)", "$1$2")的东西 -
哇,我不太会用正则表达式,你能解释一下吗?
-
我在answer解释过。
标签: java regex regex-greedy