我有一个字符串如下。
#a女朋友,或赢得争论,
但是
相同
#technology
它应该输出如下。
女朋友,或赢得争论,
技术
我使用了模式“#\ s *([^#] + $ | \ w *)”来执行此操作。但它只提供输出
一
技术
请帮帮我。
以下是我正在使用的代码。
Pattern pattern = Pattern.compile("#\\s*([^#\n\r]+$|\\w*)");
Matcher matcher = pattern.matcher(s);
while (matcher.find()) {
System.out.println(matcher.group());
}
答案 0 :(得分:1)
尝试:
/#\W*(.*)/
它会忽略#
之后的所有空格,然后抓住所有空格。
答案 1 :(得分:0)
您可以尝试(#[^#\n]*\n?)
让我知道会发生什么:)
答案 2 :(得分:0)
使用此模式'#\ s *([^#\ n \ r] + $ | \ w *)'并为每场比赛进行迭代。
import java.util.regex.Matcher; import java.util.regex.Pattern; public class Main { public static void main(String[] argv) throws Exception { Pattern pattern = Pattern.compile("pattern"); Matcher matcher = pattern.matcher("mystring"); // Find all matches while (matcher.find()) { // Get the matching string String match = matcher.group(); } } }
答案 3 :(得分:0)
这是一个真正有用的网站,用于测试你的正则表达式,看看你最终会得到什么: http://myregexp.com/
我认为这就是你要找的#\ s *([^#] | \ w )。这就是让你受益的原因。
这意味着在第一个不是#的#[空格]之后给我一切。您没有尝试匹配以#开头的第二行。在第一个不是#
的#之后你正在接受所有的东西希望有所帮助
答案 4 :(得分:0)
以下是适合您的完整代码:
String s = "# hello!";
Pattern pattern = Pattern.compile("#\\W*([^#]*)");
Matcher matcher = pattern.matcher(s);
while (matcher.find()) {
System.out.println(matcher.group(1));
}
必须使用matcher.group(1)
,这样才能获得带括号的捕获组,而不是整个表达式。