gpt4 book ai didi

.net - 将 PHP 正则表达式转换为 .NET

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

.NET Regex 中的等效项是什么

preg_replace("/\(([^()]*+|(?R))*\)/","", $string);

我总是与正则表达式斗争,我尝试使用 myregextester.com 来解决它,但我无法正确使用语法,所以它变成了这个..
1.0 (Mac OS X Mail 9.0 \(3083\))

进入
1.0

我想去掉评论(即使是嵌套的)

我正在使用它,但它不适用于嵌套评论。
 Dim regex As New Regex(String.Format("\{0}.*?\{1}", "(", "("))
Return regex.Replace(s, String.Empty)

最佳答案

正在考虑的正则表达式是匹配平衡括号的 PCRE 正则表达式。要匹配 .NET 中的平衡括号,您可以使用 this regex :

\((?>(?:[^()])+|\((?<DEPTH>)|\)(?<-DEPTH>))*(?(DEPTH)(?!))\)

VB.NET 实现:
Dim R As Regex = New Regex(" \(                   " & _
" (?> " & _
" [^()]+ " & _
" | " & _
" \( (?<DEPTH>) " & _
" | " & _
" \) (?<-DEPTH>) " & _
" )* " & _
" (?(DEPTH)(?!)) " & _
" \) ", _
RegexOptions.IgnorePatternWhitespace)
Dim str As String = R.Replace("1.0 (Mac OS X Mail 9.0 \(3083\))", "")

IDEONE demo

要删除空格,只需添加 [ ]*\s*在图案的开头。

如果您只想删除最左侧和最右侧圆括号之间的所有字符,请使用贪婪匹配:
(?s)[ ]*\(.*\)

或者
(?s)\p{Zs}*\(.*\)

demo
\p{Zs} Unicode 类别类匹配任何 Unicode 空格,而 [ ]匹配常规文字空间。请注意 \s匹配所有可能的空格,包括换行符。

关于.net - 将 PHP 正则表达式转换为 .NET,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32146861/

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