当前位置: 首页 > 知识库问答 >
问题:

对于这种情况,正则表达式是什么?[副本]

屠坚壁
2023-03-14

我有一个正则表达式挑战给你(我需要你的帮助)

我试图制作一个正则表达式,仅当字符串开头和“bbb”字之间不存在“aaa”时才发现“bbb”。

因此,我构建了以下表达式:^(?..*(aaa)).*?(bbb)

它有效,但我注意到当“aaa”位于“bbb”之后时,找不到“bbb”...我需要表达式来查找“bbb”,即使“aaa”位于“bbb”和字符串末尾之间。

因此:

必须在以下位置找到“bbb”:

"ddd bbb eee"
"bbb fff aaa"

不得在以下位置找到“bbb”:

"aaa bbb eee ddd" 
"aaa ccc bbb"

ps:看到这个链接(选择Java)http://www.regexplanet.com/cookbook/ahJzfnJlZ2V4cGxhbmV0LWhyZHNyEwsSBlJlY2lwZRiAgIDii-WPCgw/index.html测试正则表达式。我为我的案例简化了测试字符串,但正如你所知,在现实生活中,这些字符串将是实际的各种句子。

谢谢你

编辑:

啊,伙计!我总是在正则表达式问题中忘记一些东西!懒洋洋地躺着

我忘了提到“bbb”需要用另一个词(即:“zzz”)替换(replaceAll)。因此,表达式的结果需要是修改后的字符串,而不是布尔值。

因此,我们应该得到以下结果:

"ddd bbb eee" => "ddd zzz eee"
"bbb fff aaa" => "zzz fff aaa"
"bbb ggg bbb" => "zzz ggg zzz"
"aaa bbb eee ddd" => "aaa bbb eee ddd"
"aaa ccc bbb" => "aaa ccc bbb"
"fff aaa eee bbb jjj bbb" => "fff aaa eee bbb jjj bbb"

抱歉,我无法从手机更新测试链接。


共有1个答案

禄烨然
2023-03-14

几乎是正确的!!

Jus a small correction:字符串模式=“^(?..*(aaa)。*?(bbb))”

public static void main(String[] args)
    {
        String[] lines =  {"ddd bbb eee",
                           "bbb fff aaa",
                           "aaa bbb eee ddd",
                           "aaa ccc bbb"};

        String pattern = "^(?!.*(aaa).*?(bbb))";

        Pattern p = Pattern.compile(pattern);


        for (String line: lines)
        {
            Matcher matcher = p.matcher(line);
            System.out.println(matcher.find());
        }
    }

O/p:

True
True
False
False

希望这工作...

 类似资料:
  • 我试图理解正则表达式^(\d{1,2})$在google Sheets中代表什么。快速浏览一下regex站点和intools让我感到困惑。有谁能帮忙吗?

  • 问题内容: 以下代码是众所周知的将重音符转换为纯文本的代码: 我用这种方法代替了“手工制作”方法,但是我需要了解replaceAll的“ regex”部分 1)什么是“ InCombiningDiacriticalMarks”? 2)它的文档在哪里?(和类似的?) 谢谢。 问题答案: 是Unicode块属性。在JDK7中,您将可以使用两部分表示法来编写它,这对于读者来说可能更清楚。它在UAX#44

  • 问题内容: 我在以下正则表达式中找到了它: 它将方括号(及其内容)与嵌套方括号匹配。 问题答案: 是一个字符类,表示除和以外的所有字符。 您可以避免转义和特殊字符,因为它对于PCRE(函数中使用的正则表达式引擎)不是模棱两可的。 由于在PCRE中不正确,因此正则表达式解析的唯一方法是在字符类内部,该字符类稍后将关闭。与以下相同。它不能重新打开字符类内的字符类(POSIX字符类除外)。然后最后一个清

  • 代码: 输出: 请注意它是而不是(意思是字母)。我在谷歌上搜索了一下,但什么也没找到。有人能给我一些提示吗?

  • 我试图为分隔符编写正则表达式。我试图编写正则表达式,但它不是正确的分隔符。 假设输入是。我的分隔符regex的输出是:。 在分隔符之间获取字符串的正确正则表达式是什么?

  • 这个正则表达式什么意思?这里$1代表什么?