java正则表达式输出不相同
我有这样一个字符串:
test_0001_suiteid_111_leavepolicy_employee
当我使用如下正则表达式在java中拆分时:
_(?=.*_)
它像这样显示ouptut:
test
0001
suiteid
111
leavepolicy_employee
但是如果我使用这个字符串:
test_0001_suiteid_111_leavepolicy
它像这样显示ouptut:
test
0001
suiteid
111_leavepolicy
你能解释一下为什么会这样吗。我希望输出与使用公共正则表达式的第一个输出相同
# 1 楼答案
你说你在用Java做这件事。如果使用^{} ,可以使用双参数版本,并提供一些想要返回的元素我假设字符串中的键/值对的数量是固定的,或者您知道它
这应该会给你一个包含五个元素的列表:
同样地,如果你放入^{,它将产生五个元素
# 2 楼答案
行为正如预期的那样,只有在输入后面出现另一个下划线时,才会在下划线上拆分,这是由于前瞻性
(?=.*_)
如果您也想要在一个数字后出现下划线时进行拆分,请使用以下正则表达式:
见live regex demo