使用正则表达式在java中拆分字符串

时间:2012-03-14 11:22:34

标签: java regex split

我正在尝试使用正则表达式“A. * B”拆分字符串,它可以很好地检索“A”和“B”之间的字符串。但点'。'不包括新行字符\ n,\ r \ n。 你能指导我如何实现这个目标吗?

由于


谢谢大家。 Pattern.DOTALL就像一个魅力。

我有另一个与此相关的问题。如果我需要提取'A'和'B'之间的所有字符串(基本上匹配上述正则表达式),应该怎么做。

我尝试使用matcher类的find()和group(),但是下面的模式似乎返回整个字符串。

Pattern p = Pattern.compile("A.*B",Pattern.DOTALL);

6 个答案:

答案 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)

我假设您使用PatternMatcher类。

您是否尝试过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标志