Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/381.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
将这些正则表达式从javascript转换为Java_Java_Javascript_Regex - Fatal编程技术网

将这些正则表达式从javascript转换为Java

将这些正则表达式从javascript转换为Java,java,javascript,regex,Java,Javascript,Regex,我已经用Javascript编写了正则表达式,现在我想把它们转换成Java: var nat_pattern2 = /^\d{8}$/; var nat_pattern2 = /^\d{7}\-\d{1}$/; var pct_pattern1 = /^\PCT\/?[A-Z]{2}?\d{4}\/\d{6}$/; var ing pct_pattern2 = /^\PCT[A-Z]{2}\d{10

我已经用Javascript编写了正则表达式,现在我想把它们转换成Java:

            var nat_pattern2 = /^\d{8}$/;
            var nat_pattern2 = /^\d{7}\-\d{1}$/;

            var pct_pattern1 = /^\PCT\/?[A-Z]{2}?\d{4}\/\d{6}$/;
            var ing pct_pattern2 = /^\PCT[A-Z]{2}\d{10}$/;
            var pct_pattern3 = /^\P[A-Z]{2}\d{8}$/;

            var its_pattern1 = /^\ITS\/?[A-Z]{2}?\d{2}\/\d{5}$/;
            var its_pattern2 = /^\ITS[A-Z]{2}\d{7}$/;
            var its_pattern3 = /^\I[A-Z]{2}\d{7}$/;
我的开头看起来像这样,但不正确:

Pattern=Pattern.compile(“/^\d{8}$/”


您能帮助我吗?

您不需要在Java中的regexp中使用
/
<代码>\d
作为定义正则表达式的字符串的一部分而被转义,因此它将成为
\\d

Pattern pattern = Pattern.compile("^\\d{8}$");
斜杠没有特殊含义,因此也不需要转义

Pattern natPattern1 = Pattern.compile("^\\d{8}$");
Pattern natPattern2 = Pattern.compile("^\\d{7}-\\d{1}$");

Pattern pctPattern1 = Pattern.compile("^PCT/?[A-Z]{2}?\\d{4}/\\d{6}$");
Pattern pctPattern2 = Pattern.compile("^PCT[A-Z]{2}\\d{10}$");
Pattern pctPattern3 = Pattern.compile("^P[A-Z]{2}\\d{8}$");

Pattern itsPattern1 = Pattern.compile("^ITS/?[A-Z]{2}?\\d{2}/\\d{5}$");
Pattern itsPattern2 = Pattern.compile("^ITS[A-Z]{2}\\d{7}$");
Pattern itsPattern3 = Pattern.compile("^I[A-Z]{2}\\d{7}$");

Java中的regexp不需要
/
<代码>\d作为定义正则表达式的字符串的一部分而被转义,因此它将成为
\\d

Pattern pattern = Pattern.compile("^\\d{8}$");
斜杠没有特殊含义,因此也不需要转义

Pattern natPattern1 = Pattern.compile("^\\d{8}$");
Pattern natPattern2 = Pattern.compile("^\\d{7}-\\d{1}$");

Pattern pctPattern1 = Pattern.compile("^PCT/?[A-Z]{2}?\\d{4}/\\d{6}$");
Pattern pctPattern2 = Pattern.compile("^PCT[A-Z]{2}\\d{10}$");
Pattern pctPattern3 = Pattern.compile("^P[A-Z]{2}\\d{8}$");

Pattern itsPattern1 = Pattern.compile("^ITS/?[A-Z]{2}?\\d{2}/\\d{5}$");
Pattern itsPattern2 = Pattern.compile("^ITS[A-Z]{2}\\d{7}$");
Pattern itsPattern3 = Pattern.compile("^I[A-Z]{2}\\d{7}$");

\用于在Java字符串中转义。因此,你必须逃避现实。因此,您的字符串将如下所示:

Pattern pattern = Pattern.compile("^\\d{8}$");
如前所述,不需要开头和结尾

请注意,如果要匹配\必须在正则表达式中转义它。这意味着在Java字符串中有双转义。
要匹配\必须在Java中连接\\。

使用\在Java字符串中转义。因此,你必须逃避现实。因此,您的字符串将如下所示:

Pattern pattern = Pattern.compile("^\\d{8}$");
如前所述,不需要开头和结尾

请注意,如果要匹配\必须在正则表达式中转义它。这意味着在Java字符串中有双转义。
要匹配\您必须在Java中连接\\。

将正则表达式从JS转换为Java的要点:

  • 无需周围环境
    /
  • 需要转义
    \
    (例如
    \.
    而不是
    \.
  • 无需转义
    /
    (即
    \/
    变为
    /
  • 无最终标志(例如,
    g
    i

您现在可以自己翻译regexp了(
;)

将正则表达式从JS转换为JAVA的要点:

  • 无需周围环境
    /
  • 需要转义
    \
    (例如
    \.
    而不是
    \.
  • 无需转义
    /
    (即
    \/
    变为
    /
  • 无最终标志(例如,
    g
    i

您现在可以自己翻译regexp了(
;)

…这意味着您不需要在正则表达式中也避开斜杠。是的,他确实不需要斜杠。谢谢您,但我不确定这些是否正确。例如,字符串“PCT/SE2012/001083”应该与这些正则表达式中的一个匹配,但它不匹配。您能否再帮我验证一下这些正则表达式是否与我提供的javascript正则表达式匹配。谢谢!我已经研究这个问题一段时间了,它应该不是一个非常困难的问题,只是一些模式匹配。
“PCT/SE2012/001083”。匹配(“^PCT/?[a-Z]{2}?\\d{4}/\\d{6}$”
返回true…这意味着您不需要逃避正则表达式中的斜杠,也是。是的,他确实不需要。谢谢你,但我不确定这些是否正确。例如,字符串“PCT/SE2012/001083”应该与这些正则表达式中的一个匹配,但它不匹配。您能否再帮我验证一下这些正则表达式是否与我提供的javascript正则表达式匹配。谢谢!我已经研究这个问题有一段时间了,它应该不是一个非常困难的问题,只是一些模式匹配。
“PCT/SE2012/001083”。匹配(^PCT/?[a-Z]{2}?\\d{4}/\\d{6}$”
返回true。除了最后的标志,还有
compile()的参数
方法,如
模式.DOTALL
用于
/i
等…感谢您的回答。我已经设法从我的正则表达式中得到了一些结果,但我认为匹配与javascript的匹配并不完全相同。单词“PCT/SE2012/001083”应与其中一种模式匹配,但不匹配。你能告诉我为什么吗?谢谢。@nickrosenscrantz
“PCT/SE2012/001083”。匹配(^PCT/?[A-Z]{2}?\\d{4}/\\d{6}$”)
由我返回
true
compile()
方法中有参数,如
Pattern.DOTALL
for
/i
等。谢谢回答。我已经设法从我的正则表达式中得到了一些结果,但我认为匹配与javascript的匹配并不完全相同。单词“PCT/SE2012/001083”应与其中一种模式匹配,但不匹配。你能告诉我为什么吗?谢谢。@Nickrosenscrantz
“PCT/SE2012/001083”。匹配项(“^PCT/?[A-Z]{2}?\\d{4}/\\d{6}$”)
由我返回
true
,谢谢你的帮助性回答。但是为什么这些模式不匹配:“^PCT/?[A-Z]{2}?\\d{4}/\\d{6}$”应该匹配像“PCT/SE2012/001083”这样的字符串,不是吗?当它的javascript版本匹配时,它不匹配的原因是什么?有没有不完整的地方?谢谢你的回答。但是为什么这些模式不匹配:“^PCT/?[A-Z]{2}?\\d{4}/\\d{6}$”应该匹配像“PCT/SE2012/001083”这样的字符串,不是吗?当它的javascript版本匹配时,它不匹配的原因是什么?有没有不完整的地方?