我有一些这样的文字:
//(10,0,'Computer_accessibility','',''),(13,0,'History_of_Afghanistan','',''),(14,0,'Geography_of_Afghanistan','','')
我写了一个模式:
public final static Pattern r_english = Pattern.compile("\\((.*?),(.*?),(.*?),(.*?),(.*?)\\)");
这在 Java 中可以很好地提取 m.group(1)(例如 13)和 m.group(3)(例如 History_of_Afghanistan),其中 m 是匹配器。 然而,如果文本是这样的,那么它就会中断,因为 Washington,_D.C. (即 m.group(3))中有一个逗号:
(8543,0,'Washington,_D.C.','',''),(8546,0,'Extermination_camp','','')
有人可以帮我修改正则表达式并提取 Washington,_D.C.东西?谢谢
最佳答案
更改第三个捕获组以捕获所有内容,直到到达结束 '
。这允许捕获每个字符(包括逗号)。
更新:为了也允许转义'
,正则表达式如下所示。积分归 Pshemo,请参阅评论。
public final static Pattern r_english = Pattern.compile("\\((.*?),(.*?),('(?:[^']|\\')*'),(.*?),(.*?)\\)");
关于java - 使用 Regex 和 Java 从文本中提取内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40002225/