加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

Java中支持“(?pattern)”的模式

发布时间:2020-12-14 17:44:35 所属栏目:Java 来源:网络整理
导读:参见英文答案 Regex Named Groups in Java6 我想知道Java是否与C#的命名模式匹配相当.例如,在C#中,我可以这样做: var pattern = @";(?food{6});(?bard{6});";var regex = new Regex(pattern,RegexOptions.None);var match = regex.Match(";123456;123456;
参见英文答案 > Regex Named Groups in Java6
我想知道Java是否与C#的命名模式匹配相当.例如,在C#中,我可以这样做:
var pattern = @";(?<foo>d{6});(?<bar>d{6});";
var regex = new Regex(pattern,RegexOptions.None);
var match = regex.Match(";123456;123456;");

var foo = match.Groups["foo"].Success ? match.Groups["foo"].Value : null;
var bar = match.Groups["bar"].Success ? match.Groups["bar"].Value : null;

这似乎是一个干净的方式来抓住团体. Java可以做类似的事情,还是需要根据索引位置来抓取组?

String foo = matcher.group(0);

解决方法

这是从 Java 7开始支持的.你的C#代码可以翻译成如下:
String pattern = ";(?<foo>d{6});(?<bar>d{6});";
Pattern regex = Pattern.compile(pattern);
Matcher matcher = regex.matcher(";123456;123456;");
boolean success = matcher.find();

String foo = success ? matcher.group("foo") : null;
String bar = success ? matcher.group("bar") : null;

您必须创建一个Matcher对象,直到您调用find()才能真正执行正则表达式测试.

(我使用find(),因为它可以在输入字符串中的任何地方找到匹配,如Regex.Match()方法.如果正则表达式匹配整个输入字符串,则.matches()方法只返回true)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读