RegEx查找缺少闭引号的段落
本文关键字:段落 查找 RegEx | 更新日期: 2023-09-27 18:11:39
我想在换行符之前找到一个没有匹配的右引号(")的开引号("),除非换行符之后的字符是一个开引号。例如:
He said, “bla bla bla
She didn't listen.
上面应该找到"bla bla bla
然而,下一个例子不应该匹配,因为下一行以一个左引号开始:
He said, “bla bla bla
“bla bla bla.”
仅供参考,我使用c# Regex类。
“(?>[^'r'n“”]*)(?!'r?'n“)(?!”)
将匹配从开始引号到行尾的文本,除非中间有结束引号或下一行以开始引号开始。
假设您的目标是修复这些行,即,在必要的地方插入一个结束引号,
result = Regex.Replace(subject,
@"“ # Match an opening quote
(?> # Match in an atomic group (no backtracking!):
[^'r'n“”]* # any characters except newlines or quotes
) # End of atomic group
(?!'r?'n“) # Assert that no linebreak, followed by an opening quote, follows
(?!”) # Assert that no closing quote follows",
"$0”", RegexOptions.IgnorePatternWhitespace);
这样的东西会起作用吗?
"[^"]*'n[^"]
考虑以下通用正则表达式的powershell示例。
("[^"'n]*)("|'n(?!"))
$Matches = @()
$String = '"bla bla bla
She didn''t listen.
He said, "bla bla bla
"bla bla bla."'
Write-Host start with
write-host $String
Write-Host
Write-Host found
([regex]'("[^"'n]*)("|'n(?!"))').matches($String) | foreach {
write-host "key at $($_.Groups[1].Index) = '$($_.Groups[1].Value)'"
} # next match
<标题>收益率h1> 总结-
("[^"'n]*)
返回双引号 中的所有非",'n"字符 -
("|'n(?!"))
在遇到第一个"或'n"时停止返回 -
(?!")
确保'n行后面没有双引号
我似乎无法在第一次匹配时摆脱新的行字符,这可能更容易使用"trim"语句。
标题>标题>