gpt4 book ai didi

java - 找到没有被困在双引号之间的特定字符串java正则表达式

转载 作者:行者123 更新时间:2023-11-30 07:24:07 25 4
gpt4 key购买 nike

我想找到一个满足两个条件的字符串(比如x):

  1. 与模式 \b(x)\b 匹配
  2. 与模式 ".*?(x).*?(?<!\\)" 不匹配

换句话说,我正在寻找一个完整的单词(条件1)并且不在双引号中(条件2)的x值。

  • " x /" m" Not Acceptable
  • " x \" " + x + " except" :只接受第二个x

什么 Java 代码会找到x

最佳答案

第一个条件很简单。要检查第二个条件,您必须检查有效双引号的数量。如果它们是偶数,则第一个条件中捕获的字符串有效。

String text = "basdf + \" asdf \\\" b\" + b + \"wer \\\"\"";
String toCapture = "b";
Pattern pattern1 = Pattern.compile("\\b" + toCapture + "\\b");
Pattern pattern2 = Pattern.compile("(?<!\\\\)\"");
Matcher m1 = pattern1.matcher(text);
Matcher m2;
while(m1.find()){ // if any <toCapture> found (first condition fulfilled)
int start = m1.start();
m2 = pattern2.matcher(text);
int count = 0;
while(m2.find() && m2.start() < start){ // count number of valid double quotes "
count++;
}
if(count % 2 == 0) { // if number of valid quotes is even
char[] tcar = new char[text.length()];
Arrays.fill(tcar, '-');
tcar[start] = '^';
System.out.println(start);
System.out.println(text);
System.out.println(new String(tcar));
}
}

输出:

23
basdf + " asdf \" b" + b + "wer \""
-----------------------^-----------

关于java - 找到没有被困在双引号之间的特定字符串java正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37044813/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com