Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 是否可以为正则表达式前瞻计数字符?_Java_Regex_Lookahead - Fatal编程技术网

Java 是否可以为正则表达式前瞻计数字符?

Java 是否可以为正则表达式前瞻计数字符?,java,regex,lookahead,Java,Regex,Lookahead,我正在尝试验证类似于以下内容的表达式: SEN 3 00000001 HT 12.60 39.50 使用模式SEN\\d{1}\\w{8}\\w{1,2}([-+]?[0-9]*\.?[0-9]*){1,2}。这种模式基本上是有效的。返回的组为 SEN 3 00000001 HT 12.60 当39.50丢失时。我想原因是因为我的模式中的最后一个数量条件({1,2})只满足于12.60 有没有一种方法可以根据\\w{1,2}的字符数量,使用lookaheads来设置满足要求所需的数量([-+

我正在尝试验证类似于以下内容的表达式:

SEN 3 00000001 HT 12.60 39.50
使用模式
SEN\\d{1}\\w{8}\\w{1,2}([-+]?[0-9]*\.?[0-9]*){1,2}
。这种模式基本上是有效的。返回的组为

SEN 3 00000001 HT 12.60
39.50
丢失时。我想原因是因为我的模式中的最后一个数量条件(
{1,2}
)只满足于
12.60

有没有一种方法可以根据
\\w{1,2}
的字符数量,使用lookaheads来设置满足
要求所需的数量([-+]?[0-9]*\.?[0-9]*.
)您几乎可以做到:)

您所犯的错误是将最后重复的空间留在组之外。因为在12.60和39.50之间有一个空格,所以除了12.60之外没有其他的对手

请尝试使用以下正则表达式:

SEN \\d{1} \\w{8} \\w{1,2}( [-+]?[0-9]*\\.?[0-9]*){1,2}
一些优化:

  • 将()替换为(?:),因为它在量化时将被覆盖,除非是通过设计
  • 用\d替换\d{1},它们是一样的
演示+解释:

你几乎成功了:)

您所犯的错误是将最后重复的空间留在组之外。因为在12.60和39.50之间有一个空格,所以除了12.60之外没有其他的对手

请尝试使用以下正则表达式:

SEN \\d{1} \\w{8} \\w{1,2}( [-+]?[0-9]*\\.?[0-9]*){1,2}
一些优化:

  • 将()替换为(?:),因为它在量化时将被覆盖,除非是通过设计
  • 用\d替换\d{1},它们是一样的

演示+解释:

用just
\\d{1}
替换
\\d{1}
。用just
\\d{1}
替换
\\d{1}
。太棒了,感谢您的帮助!我怀疑我会发现这一点;太微妙了。太棒了,谢谢你的捕捉!我怀疑我会发现这一点;这太微妙了。