“问题”
在折腾中:
您需要使用命名组,以及在替换中引用命名组。
试图弄清楚如何使用它。
“化解过程”
1.一开始是参考,官网手册:
您没有看到如何使用命名组。
2.参考资料:
我了解到旧版本的Java不支持命名组
最新的Java7支持命名组。
3.后来注意到:
中的地址是Java6:
手动将其替换为Java7:
其实我们可以看到官网的解释:(?X)
X作为命名捕获组
不过,官网的解释中并没有其他相关语法。
例如,在常规替换中,如何引用命名组等等。
所以,还是做得很糟糕。
“综述”
1.看起来Java仍然做得很糟糕。
很明显,正则表达式的一个基本功能不受支持。
太假了。在我支持Java7之前,我得到了它。太令人沮丧了。
2.参考Java中的Regex命名组,并修改、翻译和总结Java 7+中命名组的用法,如下所示:(?X)定义一个名为groupName的组
\\k用于反向引用名为groupName的组
{GroupName}在替换函数中用于向后引用名为GroupName的组
Group(groupname)用于获取名为groupname的对应组的值
这里,相关部分的代码如下:String filenameSt
R=“aa/”;
//Java 7之后只支持命名组
//以下是我的java版本:
//Java:;Java HotSpot(TM)64位服务器VM
模式filenameP=(“.+/(?.+)”);
匹配器FilenameMatcher=(FilenameStr);
布尔foundfilename=();
(FilenameMatcher);
(foundFilename);
String onlyfilename=(“{filenamepart}”);
(onlyFilename);
因为输出是:[pattern=.+/(?.+)region=0,11 lastmatch=aa/]
真的