基于Java正则的EPLAN字符串匹配需求:处理/分隔子串输出指定内容
适配EPLAN(Java 6正则)的字符串处理方案
需求说明
- 处理格式为
text1/text2的字符串,允许字符:字母、数字、_、- - 规则1:若
text1与text2内容相同,输出空内容 - 规则2:若
text1与text2内容不同,仅输出text2
已尝试正则及问题
((\w+)(?=\/\2)):逻辑与需求相反,但可在EPLAN中运行^([^\/]+)\/(?:\1$\r?\n?)?:逻辑符合需求,但无法在EPLAN中运行
解决方案
针对Java 6正则规则,可使用以下正则表达式配合替换操作实现需求:
正则查找表达式
^([\w-]+)/(\1)$|^[\w-]+/([\w-]+)$
替换表达式
$3
原理说明
- 第一个分支
^([\w-]+)/(\1)$匹配text1与text2相同的字符串,此时捕获组$3为空,替换后输出空内容 - 第二个分支
^[\w-]+/([\w-]+)$匹配text1与text2不同的字符串,此时捕获组$3对应text2,替换后仅输出text2 - 使用
[\w-]代替\w,确保包含-字符的匹配(\w仅包含字母、数字、_)
也可分两步完成操作:
- 先匹配相同内容的字符串并替换为空:
- 查找:
^([\w-]+)/\1$ - 替换:空
- 查找:
- 再匹配剩余字符串并提取
text2:- 查找:
^[\w-]+/([\w-]+)$ - 替换:
$1
- 查找:
内容的提问来源于stack exchange,提问作者WME
相关产品推荐
相关产品推荐

