Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.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_String_String Matching - Fatal编程技术网

Java 如果标记包含目标,则标记之间的正则表达式匹配

Java 如果标记包含目标,则标记之间的正则表达式匹配,java,regex,string,string-matching,Java,Regex,String,String Matching,我有一个字符串,它的标签是BEGIN和END,它们将任何数字或字母a-Z 0-9括起来,没有空格 我想将标签与某个目标匹配 例如,给定字符串begin111999112aadfsfendbeginasd12uhyend和目标999,这将匹配 begin111999112aadfsfend和notbeginasd12uhyend 我试过BEGIN.*999.*END 我假设它需要一个前瞻来检查目标是否位于结束标记之前。您可以使用以下正则表达式: BEGIN(?:(?!BEGIN).)*999(?:

我有一个字符串,它的标签是
BEGIN
END
,它们将任何数字或字母
a-Z 0-9
括起来,没有空格

我想将标签与某个目标匹配

例如,给定
字符串
begin111999112aadfsfendbeginasd12uhyend
和目标
999
,这将匹配

begin111999112aadfsfend
not
beginasd12uhyend

我试过
BEGIN.*999.*END


我假设它需要一个前瞻来检查目标是否位于结束标记之前。

您可以使用以下正则表达式:

BEGIN(?:(?!BEGIN).)*999(?:(?!BEGIN).)*END
您可以尝试以下方法:

BEGIN(.*999.*?)END
匹配后,您将能够单独获得该数字

如果不希望匹配,则:

BEGIN.*999.*?END
您几乎正确,只需添加

两全其美
匹配
BEGIN
并捕获以下组:此非捕获组中的零个或多个:与
BEGIN
不匹配的任何字符;后跟
999
,后跟零个或多个字符,直到第一次匹配(但不包括)
END

否,如果
BEGIN…END
块(没有
999
),此正则表达式将不起作用出现在
BEGIN.*.999.*.END.
之前,例如:
beginfoendabcd123begin111999112aadfsfendbeginasd12uhyend
Oh ya。谢谢@anubhavacan你能帮忙吗?@Emily我正在旅行两天,用手机访问这个网站。将能够编辑后,我回来。
BEGIN((?:(?!BEGIN).)*999.*?)END