You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

寻求匹配逗号间无前后文本的单个竖线的Java正则表达式

解决Java正则匹配逗号间单个竖线的问题

嘿,我来帮你搞定这个正则需求!你要找的是完全被逗号包裹的单个竖线(|),也就是那些夹在两个逗号中间、前后没有其他任何字符的|对吧?

对应的正则表达式

在Java里,你可以用这个正则:

"(?<=,)\\|(?=,)"

正则拆解说明

  • (?<=,):这是反向预查,它会检查当前匹配的|前面是不是一个逗号,但这个逗号不会被包含在最终的匹配结果里。
  • \\|:匹配单个竖线,因为|在正则里是特殊字符(表示分支选择),所以必须用反斜杠转义;而Java字符串里反斜杠本身也要转义,所以写成\\|。
  • (?=,):这是正向预查,检查当前匹配的|后面是不是一个逗号,同样这个逗号也不会被包含在匹配结果里。

Java代码示例

下面是一个完整的示例,用来验证匹配效果:

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class PipeMatcher {
    public static void main(String[] args) {
        String input = "5,|,|,|,|,0.0|0.0,a,a,|a|||a||||||||,,,,,";
        // 编译正则表达式
        Pattern pattern = Pattern.compile("(?<=,)\\|(?=,)");
        Matcher matcher = pattern.matcher(input);
        
        // 遍历所有匹配项
        int count = 0;
        while (matcher.find()) {
            count++;
            System.out.printf("找到第%d个匹配的竖线,位置:%d-%d%n", count, matcher.start(), matcher.end());
        }
        System.out.printf("总共找到%d个符合要求的竖线%n", count);
    }
}

运行这段代码后,会输出4个匹配结果,正好对应你示例里的四个目标竖线,像0.0|0.0、|a这些不符合要求的竖线都不会被匹配到。

内容的提问来源于stack exchange,提问作者brandon lee

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.07 17:37:40