[英]What kind of regex should i use?
我正在嘗試拆分一個句子,但是當我在左右兩側放置一些正則表達式無法拆分時,這是我的正則表達式: \\\\s*(<>@<>)+\\\\s*
我的字串:
hello<>@<>i try!!<>@<>every thing<>@<><>@<>man<>@<>1234567
我的預期輸出:
hello
i try!!
every thing
man
123456
Pattern pt = Pattern.compile("\\s*(<>@<>)+\\s*");
pm = pt.split(m);
當我嘗試這不能拆分句子。
hello <>@<>i try!! <>@<> every thing <>@<><>@<>man <>@<>1234567
任何想法?
如果我對您的理解正確,那么您想在一個空格或<>@<>
上分割,可以在空格之前和/或之后。
這應該執行您的拆分:
String[] input = {
"hello<>@<>i try!!<>@<>every thing<>@<><>@<>man<>@<>1234567",
"hello <>@<>i try!! <>@<> every thing <>@<><>@<>man <>@<>1234567"
};
for (String s: input) {
System.out.println(Arrays.toString(s.split("(\\s?<>@<>\\s?)|\\s")));
}
產量
[hello, i, try!!, every, thing, , man, 1234567]
[hello, i, try!!, every, thing, , man, 1234567]
注意
注意"thing"
和"man"
之間的空String
,因為您有兩個連續的定界符。
您可以迭代並打印每一行,而不必打印陣列。
for (String s: input) {
String [] split = s.split("(\\s?<>@<>\\s?)|\\s");
for (String item: split) {
System.out.println(item);
}
}
...將每行打印一項。
此正則表達式應為您工作:
(\\s*<>@<>\\s*)+
碼:
String str = "hello <>@<>i try!! <>@<> every thing <>@<><>@<>man <>@<>1234567";
String[] toks = str.split( "(\\s*<>@<>\\s*)+" );
for (String tok: toks)
System.out.printf(">>> [%s]%n", tok);
str = "hello<>@<>i try!!<>@<>every thing<>@<><>@<>man<>@<>1234567";
toks = str.split( "(\\s*<>@<>\\s*)+" );
for (String tok: toks)
System.out.printf(">>> [%s]%n", tok);
輸出(兩次) ::
>>> [hello]
>>> [i try!!]
>>> [every thing]
>>> [man]
>>> [1234567]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.