首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何添加Java regex实现中缺少的特性?

如何添加Java regex实现中缺少的特性?
EN

Stack Overflow用户
提问于 2018-10-18 00:49:32
回答 2查看 0关注 0票数 0

作为.Net开发人员,我非常习惯Regex.Net中的类。Regex(正则表达式)的Java实现并不错,但它缺少一些关键功能。

我想为Java创建自己的帮助器类,但我想可能已经有一个可用。那么在Java中是否有可用于Regex的免费且易于使用的产品,或者我应该自己创建一个?

如果我会写自己的课程,你认为我应该在哪里分享它以供其他人使用?

[编辑]

有人抱怨说我没有解决当前Regex班级的问题。我会试着澄清我的问题。

在.Net中,正则表达式的使用比在Java中更容易。由于这两种语言都是面向对象的,并且在很多方面非常相似,我希望在两种语言中使用正则表达式都有类似的经验。不幸的是,事实并非如此。

这是Java和C#中的一些代码。第一个是C#,第二个是Java:

在C#中:

代码语言:javascript
复制
string source = "The colour of my bag matches the color of my shirt!";
string pattern = "colou?r";

foreach(Match match in Regex.Matches(source, pattern))
{
    Console.WriteLine(match.Value);
}

在Java中:

代码语言:javascript
复制
String source = "The colour of my bag matches the color of my shirt!";
String pattern = "colou?r";
Pattern p = Pattern.compile(pattern);
Matcher m = p.matcher(source);

while(m.find())
{
    System.out.println(source.substring(m.start(), m.end()));
}

我试图在上面的示例代码中对两种语言都公平。

你在这里注意的第一件事是类的.Value成员Match(与使用.start().end()在Java中相比)。

当我可以调用像Regex.MatchesRegex.Match等静态函数时,为什么要创建两个对象?

在更高级的用法中,差异显示出更多。再看方法Groups,辞典长度CaptureIndexLengthSuccess,等等,这些都是非常必要的功能,在我看来应该是可用于Java太。

当然,所有这些功能都可以通过自定义代理(帮助程序)类手动添加。这是我问这个问题的主要原因。我们没有RegexPerl 的微风,但至少我们可以使用Regex我认为非常巧妙设计的.Net方法。

EN

回答 2

Stack Overflow用户

发布于 2018-10-18 09:45:05

如果我自己这么说的话,这个很好!正则表达式,测试工具

票数 0
EN

Stack Overflow用户

发布于 2018-10-18 10:48:41

@ tchrist答案中提到的一些API缺陷已在Kotlin中修复。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100003384

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档