匹配具有相似起始序列的运算符
Match operators with similar start sequence
假设我有一个 Java 匹配算法,它想要匹配以下表达式之一:
key = value
key => value
我如何构建一个 Java 正则表达式来匹配任何 key-value
表达式与 =
字符并忽略 =>
序列?
现在我有表达式
([^=]+)\s*=\s*([^\r\n]+)\s*\r?\n?
你可以使用负前瞻拆分:
s.split("\s*=(?!>)\s*")
参见regex demo and IDEONE demo:
System.out.println(Arrays.toString("abc = cde".split("\s*=(?!>)\s*")));
System.out.println(Arrays.toString("abc => cde".split("\s*=(?!>)\s*")));
结果:
[abc, cde]
[abc => cde]
(?!>)
前瞻在 >
之后的匹配失败 =
。
假设我有一个 Java 匹配算法,它想要匹配以下表达式之一:
key = value
key => value
我如何构建一个 Java 正则表达式来匹配任何 key-value
表达式与 =
字符并忽略 =>
序列?
现在我有表达式
([^=]+)\s*=\s*([^\r\n]+)\s*\r?\n?
你可以使用负前瞻拆分:
s.split("\s*=(?!>)\s*")
参见regex demo and IDEONE demo:
System.out.println(Arrays.toString("abc = cde".split("\s*=(?!>)\s*")));
System.out.println(Arrays.toString("abc => cde".split("\s*=(?!>)\s*")));
结果:
[abc, cde]
[abc => cde]
(?!>)
前瞻在 >
之后的匹配失败 =
。