簡體   English   中英

如何使用Java正則表達式拆分此字符串

[英]How to split this string using Java Regular Expressions

我想分割字符串

String fields = "name[Employee Name], employeeno[Employee No], dob[Date of Birth], joindate[Date of Joining]";

name
employeeno
dob
joindate

我為此編寫了以下Java代碼,但它僅打印其他匹配項不打印的名稱。

String fields = "name[Employee Name], employeeno[Employee No], dob[Date of Birth], joindate[Date of Joining]";

Pattern pattern = Pattern.compile("\\[.+\\]+?,?\\s*" );

String[] split = pattern.split(fields);
for (String string : split) {
    System.out.println(string);
}

我在這里做錯了什么?

謝謝

這部分:

\\[.+\\]

匹配第一個[.+然后吞噬整個字符串(如果字符串中沒有換行符),然后\\\\]將匹配最后一個]

你需要做的.+通過放置一個不情願? 之后:

Pattern pattern = Pattern.compile("\\[.+?\\]+?,?\\s*");

而且不是\\\\]+? 只是\\\\]嗎?

錯誤是您正在貪婪地進行匹配。 您可以將其更改為非貪婪匹配:

Pattern.compile("\\[.+?\\],?\\s*")
                      ^

http://gskinner.com/RegExr/?2sa45上有一個在線正則表達式測試器,當您嘗試了解正則表達式以及如何將其應用於給定輸入時,它將為您提供很多幫助。

使用否定字符類來匹配方括號會更好嗎? \\ [((ww + \\ s)+ \\ w + [^ \\]] \\]

您還會看到一個很好的示例,使用否定的字符類在內部如何工作(不回溯)?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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