[英]Non-repeating Regex Pattern - negative lookahead
我正在尝试使用 Java 中的正则表达式解析一个字符串,该字符串用于维度并仅返回它的必需部分。
理想的字符串是:数字 x 数字。
任何不是这种格式的都可以忽略并返回 null。
不过,一些输入的字符串包括以下内容。
我目前的正则表达式解决方案是这样的
"(\\d+(?:\\.\\d*)?)[^\\dxX]*(?:[xX]| and |by|\\*)[^\\dxX]*(\\d+(?:\\.\\d*)?)"
然后我返回 match.group(1) + "x" + match.group(2)
我留下的问题是这些重复的,如“404X931X1007X1140”这也应该作为 null 返回,因为它的形状不规则,而是返回 404x931
我的问题是我如何确保不包括这些? 我的想法是对 append 进行负面前瞻,但它未能达到我的预期并出于某种原因返回 404x93。
first expression + "\\D*(?!([xX]| and |by|\\*)\\d+)"
万一其他人正在寻找这个。 我最终找到了一个有效的解决方案。 我会在最后使用 \b 但它不适用于 * 字符。 而后视中的 {0,30} 是因为 java 不会让我在后视中做无限量词。 虽然看起来有点乱。
(?<!\\d(?:[xX]| and |by|\\*).{0,30})\\b(\\d+(?:,\\d+)*(?:\\.\\d+)?)[^\\dxX]*(?:[xX]| and |by|\\*)[^\\dxX]*(\\d+(?:,\\d+)*(?:\\.\\d+)?)(?!.*(?:[xX]| and |by|\\*)\\D*\\d+)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.