gpt4 book ai didi

.net - 正则表达式:匹配未关闭的双引号

转载 作者:行者123 更新时间:2023-12-01 12:32:04 24 4
gpt4 key购买 nike

我想匹配所有未关闭的双引号。

如果双引号的数量是偶数,则基本上给我最后一个双引号,或者如果双引号的数量是偶数,则不匹配任何内容。

考虑这个宏伟的代码块:

Input -> Match?
===============
"testy" --> NO MATCH
"ack... --> Match "
"oh my" and "oy my" and " pp --> Match last "
do match " this --> Match "
more "testy" "test --> Match last "
more "testy" test --> NO MATCH

这里的答案不起作用:
Regex match double quote, but not pair of double quotes
最有希望的是: ".*?"(*SKIP)(*F)|"但这不适用于.NET。

我知道这里可以使用非正则表达式,但我很好奇它是如何完成的......

我没有正则表达式的实现 - 我猜这没关系:
if (searchText.IndexOf('"') > -1)
{
int quoteCount = searchText.Count(x => x == '"');
if (quoteCount % 2 != 0)
{
searchText = searchText.Insert(searchText.LastIndexOf('"'), "\\");
}
}

最佳答案

像这样“简单”的东西怎么样

^[^\"]*(\"[^\"]*\"[^\"]*)*(\")[^\"]*$

我只针对“经典”正则表达式解释器对其进行了测试,它没有使用任何奇怪的技巧,因此无论平台如何,它都应该完全兼容。

它的作用基本上是:
  • 匹配字符串开头(行)
  • 匹配任意(可能为 0)个非"字符
  • 匹配任意(可能为 0)次:
  • "字符
  • 任意数量的非"字符
  • "字符
  • 任意数量的非"字符
  • 匹配 "字符(这将是您要查找的组)
  • 匹配任意数量的非"字符
  • 匹配字符串的结尾
  • 关于.net - 正则表达式:匹配未关闭的双引号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32357844/

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