[英]regular expression output is not same
我有一个像这样的字符串:
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
你能解释一下为什么会这样吗? 我希望输出与使用常见正则表达式的第一个输出相同。
行为是预期的,只有在输入后面出现另一个下划线时才会在下划线上拆分 - 由于前瞻(?=.*_)
。
相反,如果你也想,如果下划线一个数字后出现分裂,使用这个表达式:
(?<=\d)_|_(?=.*_)
你说你是用Java做的。 如果使用String#split()
,则可以使用双参数版本并提供要返回的许多元素。 我假设您的字符串中的键/值对的数量是固定的或您知道它 。
String string = "test_0001_suiteid_111_leavepolicy_employee";
String[] parts = string.split("_", 5);
这应该给你一个五个元素的列表:
test
0001
suiteid
111
leavepolicy_employee
同样,如果你输入test_0001_suiteid_111_leavepolicy
,它将产生五个元素。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.