gpt4 book ai didi

c# - 以 Caret 开头并以 Dollar 结尾的单词不会产生预期的结果

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

我有以下代码。

string pattern5 = "^ba$";
string myString5 = "badabyba";
bool match5 = Regex.IsMatch(myString5, pattern5);
Console.WriteLine(match5); // should print True but I see False

我想在以 ba 开头并以 ba 结尾的字符串中找到一个匹配项。如果我在一个模式中同时使用 ^$ 它不会给我预期的结果。但是,如果我使用 ^$(^baba$),那么我会得到预期的结果,但是如果 myString5ba 那么它显示 True,这不是我想要的。

这样一起使用^$是否违法?

最佳答案

^ 匹配字符串的开头,$ 匹配结尾。所以正则表达式 ^ba$ 分解如下:

  1. ^: 字符串开始
  2. b:文字字符'b'
  3. a:文字字符'a'
  4. $:字符串结束

因此,您的正则表达式将匹配精确的字符串ba


如果我对您的理解正确,您实际上想要做的是匹配以ba 开头和结尾的任何 字符串。所以我们需要使用通配符。

^ba.*ba$

. 匹配“任何字符”,* 修改前面的表达式以匹配 0 次或更多次。所以这个正则表达式匹配如下:

  1. ^: 字符串开始
  2. ba:文字串“ba”
  3. .*:任何字符,0 次或多次。也就是说,任何字符的任何序列
  4. ba:文字串“ba”
  5. $:字符串结束

所以 ^ba.*ba$ 将匹配这些字符串中的任何一个:

baba
bababa
bafoobarba
ba ba

但不是这些:

ba
abba
bafoobar

我建议尝试使用 interactive regex tester .

关于c# - 以 Caret 开头并以 Dollar 结尾的单词不会产生预期的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33631960/

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