[英]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.