分割具有至少一个特殊字符(例如-#)和空格的字符串

我会有这样的话

String text = [ name abc ]
String text = [ name # abcd]
String text = [ name - abcd]
String text = [ name  abcde    ]

我想将这些单词拆分为abc,abcd,abcde

这里的分隔符可以是onlyspaces,spaces#spaces,spaces-spaces和nospace。

我要匹配此正则表达式

Pattern pat = Pattern.compile("\[\s*name\s*(-|#)\s*[a-z0-9]+\s*\]",Pattern.CASE_INSENSITIVE);
Matcher matcher = pat.matcher(text);
    while (matcher.find()) {
        String subseq = matcher.group();
        String extractName = subseq.split("(-|#|\\s*)",2)[1].replaceAll("]","").trim();
        }

此代码无法用于[name mynameisDON],但适用于[name:abc]

我想知道什么正则表达式传递给此拆分函数,以便我可以实现自己想要的东西。

heroliyimin 回答:分割具有至少一个特殊字符(例如-#)和空格的字符串

尝试一下:

private static void test(String text) {
    Matcher m = Pattern.compile("\\[\\s*(?i:name)\\s+(?:[#-]\\s+)?([^\\]\\s]+)\\s*\\]").matcher(text);
    if (m.matches()) {
        System.out.println("name: '" + m.group(1) + "'");
    } else {
        System.out.println("Invalid: '" + text + "'");
    }
}

测试

test("[ name abc ]");
test("[ name # abcd]");
test("[ name - abcd]");
test("[ name  abcde    ]");
test("[ name : abcd]");
test("[ name#abcd]");

输出

name: 'abc'
name: 'abcd'
name: 'abcd'
name: 'abcde'
Invalid: '[ name : abcd]'
Invalid: '[ name#abcd]'
本文链接:https://www.f2er.com/3157867.html

大家都在问