我有一个正则表达式挑战给你(我需要你的帮助)
我试图制作一个正则表达式,仅当字符串开头和“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"
抱歉,我无法从手机更新测试链接。
几乎是正确的!!
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代表什么?