我正在尝试使用正则表达式“A. * B”拆分字符串,它可以很好地检索“A”和“B”之间的字符串。但点'。'不包括新行字符\ n,\ r \ n。 你能指导我如何实现这个目标吗?
由于
谢谢大家。 Pattern.DOTALL就像一个魅力。
我有另一个与此相关的问题。如果我需要提取'A'和'B'之间的所有字符串(基本上匹配上述正则表达式),应该怎么做。
我尝试使用matcher类的find()和group(),但是下面的模式似乎返回整个字符串。
Pattern p = Pattern.compile("A.*B",Pattern.DOTALL);
答案 0 :(得分:1)
将java.util.regex.Pattern与MULTILINE标志一起使用:
import java.util.regex.Pattern;
Pattern pattern = Pattern.compile("A.*B", Pattern.MULTILINE);
pattern.split(string);
答案 1 :(得分:1)
尝试“A [。\\ s] * B”
或者您可以指定DOTALL开关以便“。”将包括偶数行终止符。看一下Pattern类的文档。
答案 2 :(得分:1)
使用此选项编译正则表达式:Pattern regex = Pattern.compile("A.*B",Pattern.DOTALL)
答案 3 :(得分:0)
我假设您使用Pattern
,Matcher
类。
您是否尝试过MULTILINE
方法提供Pattern.compile()
?
Pattern.compile(regex, Pattern.MULTILINE)
'' =任何字符(可能与行终止符匹配也可能不匹配)
http://docs.oracle.com/javase/1.4.2/docs/api/java/util/regex/Pattern.html#lt
答案 4 :(得分:0)
尝试将yor regex更改为"A(.|\\s)*B"
这意味着A followed by any character(.) or any white character(\s) any number of times followed by B
(java代码需要双重scaped)。
Java中正则表达式(构造,空格字符等)的引用:http://docs.oracle.com/javase/6/docs/api/java/util/regex/Pattern.html
答案 5 :(得分:0)
看看java.util.regex.Pattern.compile(String regex,int flags),尤其是。 DOTALL标志