gpt4 book ai didi

c# - 如何大写正则表达式模式?

转载 作者:太空狗 更新时间:2023-10-29 21:59:21 25 4
gpt4 key购买 nike

我目前正在研究一个高度利用正则表达式的项目。输入字符串已经大写,因此设置了正则表达式 IgnoreCase 标志。内部 MS RegEx 引擎随后将所有大小写改回较低,这是不必要的打击。将 reg 表达式模式更改为大写并删除标志有助于提高性能。

有谁知道可以在不影响组名或转义字符的情况下将 Reg ex 模式大写的算法库?

最佳答案

您可以搜索前面没有奇数个反斜杠的小写字母:

(?<!(?<!\\)(?:\\\\)*\\)\p{Ll}+

然后将匹配传递给 MatchEvaluator,将其大写并替换原始字符串中的文本。我不懂 C#,所以这可能不会立即起作用(从 RegexBuddy 中提取并修改了一些代码片段),但这是一个开始:

string resultString = null;
resultString = Regex.Replace(subjectString,
@"(?<! # Negative lookbehind:
(?<!\\)(?:\\\\)*\\ # Is there no odd number of backslashes
| # nor
\(\?<?\p{L}* # (?<tags or (?modifiers
) # before the current position?
\p{Ll}+ # Then match one or more letters",
new MatchEvaluator(ComputeReplacement), RegexOptions.IgnorePatternWhitespace);

public String ComputeReplacement(Match m) {
// You can vary the replacement text for each match on-the-fly
return @"\0".ToUpper(); // or whatever is needed for uppercasing in .NET
}

解释:

(?<!        # assert that the string before the current position doesn't match:
(?<!\\) # assert that we start at the first backslash in the series
(?:\\\\)* # match an even number of backslashes
\\ # match one backslash
)
\p{Ll}+ # now match any sequence of lowercase letters

关于c# - 如何大写正则表达式模式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6150354/

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