gpt4 book ai didi

java - 正则表达式 - 如何匹配元素,同时忽略引号之间的其他元素?

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

我似乎找不到适合我需要的正则表达式。

我有一个以下形式的 .txt 文件:

Abc "test" aBC : "Abc aBC" 
Brooking "ABC" sadxzc : "I am sad"
asd : "lorem"
a22 : "tactius"
testsa2 : "bruchia"
test : "Abc aBC"
b2 : "Ast2"

从这个 .txt 文件中,我希望提取与此正则表达式“([a-zA-Z]\w+)”匹配的所有内容,引号之间的内容除外。

我想重命名每个单词(引号中的单词除外),所以我应该有以下输出:

A "test " B : "Abc aBC" 
Z "ABC" X : "I am sad"
Test : "lorem"
F : "tactius"
H : "bruchia"
Game : "Abc aBC"
S: "Ast2"

使用正则表达式可以实现这一点吗?有没有不使用正则表达式的替代方案?

最佳答案

如果引号是平衡的并且输入中没有像 \" 这样的转义,那么您可以使用此正则表达式来匹配双引号之外的单词:

(?=(?:(?:[^"]*"){2})*[^"]*$)(\b[a-zA-Z]\w+\b)

RegEx Demo

在java中它将是:

Pattern p = Pattern.compile("(?=(?:(?:[^\"]*\"){2})*[^\"]*$)(\\b[a-zA-Z]\\w+\\b)");

如果单词位于双引号之外,则此正则表达式将通过使用前瞻来匹配单词,以确保每个匹配的单词后面有偶数个引号。

关于java - 正则表达式 - 如何匹配元素,同时忽略引号之间的其他元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30461793/

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