gpt4 book ai didi

正则表达式查找丢失的引号

转载 作者:行者123 更新时间:2023-12-04 14:02:28 25 4
gpt4 key购买 nike

仅当内容缺少开始引号或结束引号时,我才需要一个 perl 正则表达式来选择内容。开始引号前面总是有一个等号 =。结束引号后可以跟一个空格、更多文本或回车。在给定的一行中,可以有许多属性(引号对)要检查。

我试过了 (?<!")(.*?)"但那是一场灾难。我想也许我可以做一个简单的正则表达式找到 equle 符号,查看下一个字符并检查它是否是引号后跟文本和结束引号。但是,如果文本的开头或结尾没有引号,请添加它。

注意引号之间的文本始终是字符数据。不会有符号或空格。

<table pgwide="0" id="dvr_config_firmware>
<title>DFR Firmware</title>
<tgroup cols="2">
<colspec colname="col1>
<colspec colname="col2">

最佳答案

使用分支重置 (?| ... ) (Perl) 你可以匹配信息形式
并使用简单的替换。
这将匹配两个缺失形式之一。

/=(?|(")([^"<>\s]*)()(?=[\s>]|\/>)|(?!")()([^"<>\s]*)("))/

替换为="$2"

https://regex101.com/r/2qvpLr/1

 = 
(?|
( " ) # (1)
( [^"<>\s]* ) # (2)
( ) # (3)
(?= [\s>] | /> )
|
(?! " )
( ) # (1)
( [^"<>\s]* ) # (2)
( " ) # (3)
)

非分支重置方式(Python):

r'=(?:(")([^"<>\s]*)()(?=[\s>]|\/>)|(?!")()([^"<>\s]*)("))'

替换为="\2\5"

https://regex101.com/r/IXFJb6/1

 = 
(?:
( " ) # (1)
( [^"<>\s]* ) # (2)
( ) # (3)
(?= [\s>] | /> )
|
(?! " )
( ) # (4)
( [^"<>\s]* ) # (5)
( " ) # (6)
)

----------------------------

回应@JennyP评论中的新情况:
a condition that must be in account which I wasn't told before. The attribute group can have spaces in it. For instanct <info date="09 JAN 2000 version="1.0"> there needs to be a quote after 2000.

可以做到,因为它不是xml/html,也不是关联的属性
带有解析标记。

因为这些正则表达式只是解析您在
中呈现的原始字符串你的问题。

你不能把这个问题变成“如何解析xml/html”。
因此,请保持它只匹配原始的、有点成型的文本。

对于 Perl:

=(?|(")((?:(?![a-z]*=)[^"<>])*)()(?=[\s>]|/>)|(?!")()((?:(?![a-z]*=)[^"<>])*)("))

https://regex101.com/r/hXNBSx/1

对于 Python:

=(?:(")((?:(?![a-z]*=)[^"<>])*)()(?=[\s>]|/>)|(?!")()((?:(?![a-z]*=)[^"<>])*)("))

https://regex101.com/r/U4sBOW/1

关于正则表达式查找丢失的引号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69560870/

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