gpt4 book ai didi

c# - 在动态方法中使用正则表达式

转载 作者:太空宇宙 更新时间:2023-11-03 23:20:09 25 4
gpt4 key购买 nike

今天我可以做硬编码,但后来我想改变它,字符串单词模式可以应用在@"\bfood\b"的一侧。我想在不使用硬编码的情况下将其变成动态的

在未来我想用“鸡”这个词而不是“食物”。

我尝试将代码 "@"\bfood\b" 替换为 @"\b"+ pattern +"\b" 但它不起作用.

    string inputText = "food ddd dd";

string dddd = "\bfood\b";

string pattern = "food";
Regex rx = new Regex(@"\bfood\b", RegexOptions.None);
MatchCollection mc = rx.Matches(inputText);

if (rx.Match(pattern).Success)
{
int dd = 3;
}

最佳答案

你应该使用

@"\b" + Regex.Escape(pattern) + @"\b"

或者更通用的:

@"(?<!\w)" + Regex.Escape(pattern) + @"(?!\w)"

或使用 string.format :

Regex rx = new Regex(string.Format(@"\b{0}\b", Regex.Escape(pattern)), RegexOptions.None);

或者用字符串插值:

Regex rx = new Regex($@"(?<!\w){Regex.Escape(pattern)}(?!\w)", RegexOptions.None);

现在,我为什么建议 (?<!\w)(?!\w)环顾四周?因为这些是不依赖上下文的单词边界。如果您决定通过 |border| 怎么办?图案? \b\|border\|\b很可能无法匹配您打算匹配的大多数情况,因为 \b将要求在第一个 | 之前出现一个单词字符在最后一个 | 之后.环视将匹配 |border|仅当未包含单词字符时才为字符串。

关于c# - 在动态方法中使用正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35702167/

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