我正在尝试编写一个Java正则表达式,它将查找两个
以下是一些测试和预期的结果组:
:
之间的所有字符串。如果字符之间的字符串包含空格、换行符或制表符,则应忽略它。空字符串也被忽略。_
是可以的!该组可以包括封闭的:
,也可以不包括。以下是一些测试和预期的结果组:
"test :candidate: test" => ":candidate:"
"test :candidate: test:" => ":candidate:"
"test :candidate:_test:" => ":candidate:", ":_test:"
"test :candidate::test" => ":candidate:"
"test ::candidate: test" => ":candidate:"
"test :candidate_: :candidate: test" => ":candidate_:", ":candidate:"
"test :candidate_:candidate: test" => ":candidate_:", ":candidate:"
我测试了很多正则表达式,这些几乎都有效:
":(\\w+):"
":[^:]+:"
当这两个组共享一个冒号时,我仍然遇到问题:
"test :candidate_: :candidate: test" => ":candidate_:", ":candidate:" // OK
"test :candidate_:candidate: test" => ":candidate_:" // ERROR! :(
看起来第一组“消耗”了第二个冒号,导致匹配器无法找到我期望的第二个字符串。
有人能指点我解决这个问题的正确方向吗? 你能否详细说明为什么匹配器会“消耗”冒号?
谢谢。
split()
,但我想了解如何使用正则表达式来完成它。如果找不到正则表达式的解决方案,我认为我会使用这种方法。 - Vincent Durmont:
,要么都没有。 - Vincent Durmont