Sta*_*wed 2 java regex android
假设定义了一个String:
String list = "apples,orange,bears,1,100,20,apple";
Run Code Online (Sandbox Code Playgroud)
如果不将列表分成集合或数组,是否有更好的方法在列表中查找字符串?例如,如果我搜索"bear",应该没有结果,因为没有完全匹配(bears不计数).您无法查找" ,bear,"因为无法保证单词bear不会出现在文件的开头或结尾.
您仍然可以使用以下内容:
(^|,)bears(,|$)
Run Code Online (Sandbox Code Playgroud)
它会查找逗号,或者行的开头或结尾,我相信这就是你要找的东西.
编辑:附录
由于Denomales提到它,上面的正则表达式搜索将使用它可以找到的任何逗号(如果有的话),这样你就可以获得重叠匹配,就像列表那样apples,orange,bears,honey,bears,bears,bears,bears,9999,bees,只会计算出现有5个中的3个熊.在这种情况下你可以做的是使用lookarounds.可能需要一点时间来了解它们,但它的要点是它们在没有消耗它们的情况下向后看,或者在角色之前.这样就可以找到所有5只熊,这就是你如何使用它们:
(?<=^|,)bears(?=,|$)
Run Code Online (Sandbox Code Playgroud)
字符细分......
^ 表示行的开头,以便在没有逗号的情况下,您仍然可以获得匹配.
, 是一个字面逗号.
(?<= ... )是一个积极的外观,并将看到b角色背后,bears以确保内部有什么,这是一个^或一个,.
(?= ... )是一个积极的向前看,并将照顾s角色,bears以确保内部有什么,这是一个,或一个$.
$意味着一条线的终点,非常像^,但最后.