java这个正则表达式正确吗?
对于像2012ca-e001a083这样的字符串,我只想解析e001a083,我在Java中使用了一个正则表达式,比如:(.*-)(.*)
,所以我应该能够在group=2中拉出“e001a083”,对吗?这个正则表达式正确吗
你可以在下面搜索框中键入要查询的问题!
对于像2012ca-e001a083这样的字符串,我只想解析e001a083,我在Java中使用了一个正则表达式,比如:(.*-)(.*)
,所以我应该能够在group=2中拉出“e001a083”,对吗?这个正则表达式正确吗
# 1 楼答案
你可以在
-
上进行以太拆分,然后选择最后一部分,或者选择第二组正则表达式但我建议使用拆分机制,因为regex中的回溯可能要慢得多
还有另一种选择。可以使用look around机制。然后你就不需要指出你想要哪一组了
# 2 楼答案
虽然这个RE会起作用,并作为第二组交付你想要的子字符串,但你的RE很差。特别是,如果你不需要组,你应该避免捕获它们,你还应该让第一部分能够被扫描一次,而不是试图回溯。RE
[^-]*-([^-]*)
更合适(在这种情况下,它将是RE中的第一个组,这是您想要的),因为它可以在一次扫描中解析正确的字符串# 3 楼答案
如果要匹配的格式定义得非常清楚,那么尽可能紧密地匹配格式会更安全(而且通常更有用)
就这样崩溃了
第一组应该包含
-
之前的所有内容,第二组应该包含-
之后的所有内容