我有这个字符串:"您好,我的名字是[[Peter.java]]。"
期望的分裂是:[你好,我的名字,是,[[Peter.java]]]
我在punktuation标记处分开,但完全忽略了这些括号中的内容。
我试过了:
string.split("(?!\\[\\[.*\\]\\])\\s*(\\,|\\.|\\s)\\s*")
但这不起作用,因为输出是[Hello,my,Name,is,[[Peter,java]]]。你能救我吗?
其他例子:
"Hello. My name is [[Peter.java]]" --> [Hello, My, name, is, [[Peter.java]]]
"Hi. How, [[are,you]]" --> [Hi, How, [[are,you]]]
答案 0 :(得分:1)
您可以使用此正则表达式进行拆分:
[.,\s]+(?!\w+])
<强> Working demo 强>
代码:
public void testRegex() {
String str = "Hello. my Name is [[Peter.java]].";
String[] arr = str.split("[.,\\s]+(?!\\w+])");
System.out.println(Arrays.toString(arr));
}
// Output: [Hello, my, Name, is, [[Peter.java]]]
修改:在评论中指出 HamZa ,上面的正则表达式失败的是字符串something, like this]
。因此,要利用 SKIP&amp;失败 pcre功能,可以使用以下方法改进此正则表达式:
\[\[.*?\]\] # Match our brackets
(*SKIP)(*FAIL) # Skip that match and proceed further
| # or
[\s.,]+ # any character of: whitespace (\n, \r, \t,
\f, and " "), '.', ',' (1 or more times)
<强> Working demo 强>
答案 1 :(得分:1)