微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用Java正则表达式来匹配行

如何解决如何使用Java正则表达式来匹配行

| 原始数据是:
auser1 home1b
auser2 home2b
auser3 home3b
我想匹配一条线,但不能使用ѭ1it 但是,我可以使用
a(.*?)b
来匹配
user1 home1
。 我该如何匹配
auser1 home1b
    

解决方法

默认情况下,
^
$
分别匹配输入的开始和结束。您需要使用
(?m)
启用多行模式,这会导致
^
$
匹配行的开始和结束:
(?m)^.*$
演示:
import java.util.regex.*;

public class Main {
    public static void main(String[] args) throws Exception {

        String text = \"auser1 home1b\\n\" +
                \"auser2 home2b\\n\" +
                \"auser3 home3b\";

        Matcher m = Pattern.compile(\"(?m)^.*$\").matcher(text);

        while (m.find()) {
            System.out.println(\"line = \" + m.group());
        }
    }
}
产生以下输出: 行= auser1 home1b 行= auser2 home2b 行= auser3 home3b 编辑我
^.*$
不匹配的事实是因为默认情况下
.
与match14ѭ和
\\n
不匹配。如果您使用
(?s)
启用DOT-ALL,并导致
.
也与之匹配,则会看到整个输入字符串都已匹配:
(?s)^.*$
编辑二 在这种情况下,您还可以放下
^
$
,而只需寻找模式
.*
。由于
.
不匹配
\\n
,因此在查找
(?m)^.*$
时,您将得到相同的匹配项,正如@Kobi在评论中正确提及的那样。     ,我们也可以使用标记
MULTILINE
 Matcher m = Pattern.compile(\"^.*$\",Pattern.MULTILINE).matcher(text);
这将启用多行模式,这将为您提供预期的结果。     

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。