作为.Net开发人员,我非常习惯Regex
.Net中的类。Regex
(正则表达式)的Java实现并不错,但它缺少一些关键功能。
我想为Java创建自己的帮助器类,但我想可能已经有一个可用。那么在Java中是否有可用于Regex的免费且易于使用的产品,或者我应该自己创建一个?
如果我会写自己的课程,你认为我应该在哪里分享它以供其他人使用?
[编辑]
有人抱怨说我没有解决当前Regex
班级的问题。我会试着澄清我的问题。
在.Net中,正则表达式的使用比在Java中更容易。由于这两种语言都是面向对象的,并且在很多方面非常相似,我希望在两种语言中使用正则表达式都有类似的经验。不幸的是,事实并非如此。
这是Java和C#中的一些代码。第一个是C#,第二个是Java:
在C#中:
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中:
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.Matches
或Regex.Match
等静态函数时,为什么要创建两个对象?
在更高级的用法中,差异显示出更多。再看方法Groups
,辞典长度Capture
,Index
,Length
,Success
,等等,这些都是非常必要的功能,在我看来应该是可用于Java太。
当然,所有这些功能都可以通过自定义代理(帮助程序)类手动添加。这是我问这个问题的主要原因。我们没有Regex
Perl 的微风,但至少我们可以使用Regex
我认为非常巧妙设计的.Net方法。
发布于 2018-10-18 09:45:05
如果我自己这么说的话,这个很好!正则表达式,测试工具
发布于 2018-10-18 10:48:41
@ tchrist答案中提到的一些API缺陷已在Kotlin中修复。
https://stackoverflow.com/questions/-100003384
复制相似问题