有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何匹配除一个单词以外的所有单词?

我试图匹配以PRE开头和以PRE结尾的表达式。我正在寻找一个惰性匹配,即匹配表达式中的结束PRE应该是在开始PRE之后找到的第一个。 我试图通过一个负前瞻regex实现这一点,在RegExr上进行测试:

正则表达式:

PRE(\w|\s)+(?!PRE)

要匹配的表达式:

PRE erp PRE edas PRE

上面的表达式与给定的正则表达式完全匹配,而我只希望匹配PRE-erp-PRE。 请建议一个惰性匹配以PRE开头和结尾的表达式的正则表达式


共 (3) 个答案

  1. # 1 楼答案

    "(PRE)(.*?)(PRE)" 
    

    这在我的(C#)代码中适用,返回一个匹配,PRE-erp-PRE

            var codeBlocks = Regex.Matches("PRE erp PRE edas PRE", "(PRE)(.*?)(PRE)", RegexOptions.IgnoreCase | RegexOptions.Singleline);
            MessageBox.Show("Matches found: " + codeBlocks.Count.ToString() + "\nMatch: " + codeBlocks[0].Value);
    
  2. # 2 楼答案

    假设您的语言支持惰性匹配(如果它支持环视,我想它也支持惰性量词):

    PRE(.*?)PRE
    

    由于此答案可能有误,请在下次指定您的语言。对于不同的语言,Regex有不同的特性集