簡體   English   中英

正則表達式輸出不相同

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM