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
和notbeginasd12uhyend
我试过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