Java 检查要匹配的模式(具有双值)。正则表达式
我有两条线:Java 检查要匹配的模式(具有双值)。正则表达式,java,regex,Java,Regex,我有两条线: 第一个字符串应与此模式匹配:“anyDoubleValue anyDoubleValue anyDoubleValue”。请注意,这些双值之间用空格分隔。我所说的anyDoubleValue是指:任何整数或十进制值 第二个字符串应与此模式匹配:“aSet aSet aSet”。集合“aSet”应该只有-1、0或1。还请注意,这些集合由空格分隔 我尝试了以下方法,但都没有达到目的: if(aString.matches("[\\d\\s\\d\\s\\d]"){//do foo} i
if(aString.matches("[\\d\\s\\d\\s\\d]"){//do foo}
if(anotherString.matches("[0-1\\s0-1\\s0-1]")){// do bar}
首先:
"-?[0-9](?:\\.[0-9]+)? -?[0-9](?:\\.[0-9]+)? -?[0-9](?:\\.[0-9]+)?"
第二项:
"(?:0|-?1) (?:0|-?1) (?:0|-?1)"
首先:
"-?[0-9](?:\\.[0-9]+)? -?[0-9](?:\\.[0-9]+)? -?[0-9](?:\\.[0-9]+)?"
第二项:
"(?:0|-?1) (?:0|-?1) (?:0|-?1)"
首先:
"-?[0-9](?:\\.[0-9]+)? -?[0-9](?:\\.[0-9]+)? -?[0-9](?:\\.[0-9]+)?"
第二项:
"(?:0|-?1) (?:0|-?1) (?:0|-?1)"
首先:
"-?[0-9](?:\\.[0-9]+)? -?[0-9](?:\\.[0-9]+)? -?[0-9](?:\\.[0-9]+)?"
第二项:
"(?:0|-?1) (?:0|-?1) (?:0|-?1)"
对于第一个:
(?:0|-?1)(\\s(?:0|-?1)){2}
匹配双精度值的模式为-“-?\\d+(.\\d+)”
。好的,这是一个非常普遍的问题。不考虑科学符号。
因此,要获得双值和空格的序列,请使用:
// Removed non-captured group for readability purpose
(-?\\d+(\\.\\d+)?)(?:\\s(-?\\d+(\\.\\d+)?)){2}
对于第二个:
(?:0|-?1)(\\s(?:0|-?1)){2}
对于第一个:
(?:0|-?1)(\\s(?:0|-?1)){2}
匹配双精度值的模式为-“-?\\d+(.\\d+)”
。好的,这是一个非常普遍的问题。不考虑科学符号。
因此,要获得双值和空格的序列,请使用:
// Removed non-captured group for readability purpose
(-?\\d+(\\.\\d+)?)(?:\\s(-?\\d+(\\.\\d+)?)){2}
对于第二个:
(?:0|-?1)(\\s(?:0|-?1)){2}
对于第一个:
(?:0|-?1)(\\s(?:0|-?1)){2}
匹配双精度值的模式为-“-?\\d+(.\\d+)”
。好的,这是一个非常普遍的问题。不考虑科学符号。
因此,要获得双值和空格的序列,请使用:
// Removed non-captured group for readability purpose
(-?\\d+(\\.\\d+)?)(?:\\s(-?\\d+(\\.\\d+)?)){2}
对于第二个:
(?:0|-?1)(\\s(?:0|-?1)){2}
对于第一个:
(?:0|-?1)(\\s(?:0|-?1)){2}
匹配双精度值的模式为-“-?\\d+(.\\d+)”
。好的,这是一个非常普遍的问题。不考虑科学符号。
因此,要获得双值和空格的序列,请使用:
// Removed non-captured group for readability purpose
(-?\\d+(\\.\\d+)?)(?:\\s(-?\\d+(\\.\\d+)?)){2}
对于第二个:
(?:0|-?1)(\\s(?:0|-?1)){2}
对于第一个匹配:
^(\d+(\.\d+)?)\s(\d+(\.\d+)?)\s(\d+(\.\d+)?)$
^(\-1|0|1)\s(\-1|0|1)\s(\-1|0|1)$
请注意,它允许有或没有小数部分的双值
对于第二个匹配:
^(\d+(\.\d+)?)\s(\d+(\.\d+)?)\s(\d+(\.\d+)?)$
^(\-1|0|1)\s(\-1|0|1)\s(\-1|0|1)$
对于第一个匹配:
^(\d+(\.\d+)?)\s(\d+(\.\d+)?)\s(\d+(\.\d+)?)$
^(\-1|0|1)\s(\-1|0|1)\s(\-1|0|1)$
请注意,它允许有或没有小数部分的双值
对于第二个匹配:
^(\d+(\.\d+)?)\s(\d+(\.\d+)?)\s(\d+(\.\d+)?)$
^(\-1|0|1)\s(\-1|0|1)\s(\-1|0|1)$
对于第一个匹配:
^(\d+(\.\d+)?)\s(\d+(\.\d+)?)\s(\d+(\.\d+)?)$
^(\-1|0|1)\s(\-1|0|1)\s(\-1|0|1)$
请注意,它允许有或没有小数部分的双值
对于第二个匹配:
^(\d+(\.\d+)?)\s(\d+(\.\d+)?)\s(\d+(\.\d+)?)$
^(\-1|0|1)\s(\-1|0|1)\s(\-1|0|1)$
对于第一个匹配:
^(\d+(\.\d+)?)\s(\d+(\.\d+)?)\s(\d+(\.\d+)?)$
^(\-1|0|1)\s(\-1|0|1)\s(\-1|0|1)$
请注意,它允许有或没有小数部分的双值
对于第二个匹配:
^(\d+(\.\d+)?)\s(\d+(\.\d+)?)\s(\d+(\.\d+)?)$
^(\-1|0|1)\s(\-1|0|1)\s(\-1|0|1)$
你能定义“双重价值”吗?你的问题措词不当。与其提供占位符,不如提供示例字符串,这样就不会有太多关于您所问问题的歧义。现在,看起来您试图多次匹配文字字符串“anyDoubleValue”,但您的叙述表明您实际上在尝试匹配
double
值。我所说的anyDoubleValue是指:任何整数或任何十进制值。@帕尔帕蒂姆。好的,我会尝试改进这个问题。你能定义“双重价值”吗?你的问题措辞很糟糕。与其提供占位符,不如提供示例字符串,这样就不会有太多关于您所问问题的歧义。现在,看起来您试图多次匹配文字字符串“anyDoubleValue”,但您的叙述表明您实际上在尝试匹配double
值。我所说的anyDoubleValue是指:任何整数或任何十进制值。@帕尔帕蒂姆。好的,我会尝试改进这个问题。你能定义“双重价值”吗?你的问题措辞很糟糕。与其提供占位符,不如提供示例字符串,这样就不会有太多关于您所问问题的歧义。现在,看起来您试图多次匹配文字字符串“anyDoubleValue”,但您的叙述表明您实际上在尝试匹配double
值。我所说的anyDoubleValue是指:任何整数或任何十进制值。@帕尔帕蒂姆。好的,我会尝试改进这个问题。你能定义“双重价值”吗?你的问题措辞很糟糕。与其提供占位符,不如提供示例字符串,这样就不会有太多关于您所问问题的歧义。现在,看起来您试图多次匹配文字字符串“anyDoubleValue”,但您的叙述表明您实际上在尝试匹配double
值。我所说的anyDoubleValue是指:任何整数或任何十进制值。@帕尔帕蒂姆。好的,我将尝试改进这个问题。我尝试匹配一个开头和/或结尾有空格的字符串。你能告诉我为什么不匹配吗?请参见以下内容:(\s\d+(\.\d+))\s(-)\d+(\.\d+)\s(-),(\d+(\.\d+)\s(-)\d+(\.\d+))\s(-)(\d+(\.\d+)),(\s\d+(\.\d+)\s(-)\d+(\.\d+)\s(-)\d+(\.\d+)\d+)\s(-)。我试图与开头和/或结尾有空格的字符串匹配。你能告诉我为什么不匹配吗?请参见以下内容:(\s\d+(\.\d+))\s(-)\d+(\.\d+)\s(-),(\d+(\.\d+)\s(-)\d+(\.\d+))\s(-)(\d+(\.\d+)),(\s\d+(\.\d+)\s(-)\d+(\.\d+)\s(-)\d+(\.\d+)\d+)\s(-)。我试图与开头和/或结尾有空格的字符串匹配。你能告诉我为什么不匹配吗?请参见以下内容:(\s\d+(\.\d+))\s(-)\d+(\.\d+)\s(-),(\d+(\.\d+)\s(-)\d+(\.\d+))\s(-)(\d+(\.\d+)),(\s\d+(\.\d+)\s(-)\d+(\.\d+)\s(-)\d+(\.\d+)\d+)\s(-)。我试图与开头和/或结尾有空格的字符串匹配。你能告诉我为什么不匹配吗?请参见以下内容:(\s\d+(\.\d+))\s(-\d+(\.\d+))\s(-\d+(\.\d+)),(-\d+)\s(-\d+)(\.\d+))\s(-\d+(\.\d+)),(\s\d+(\.\d+))\s(-\d+(\.\d+)\d+)\s(-\d+)\d+(\.\d+)\d+)\s(--\d+)。