gpt4 book ai didi

c# - 查找所有包含 + 的字符

转载 作者:行者123 更新时间:2023-11-30 15:56:21 26 4
gpt4 key购买 nike

我有很长的字符串,现在我需要找到字符串中的每个字符(不是数字)都用 + 号括起来。

例如

  • 1q+1q+1 : 结果为假
  • 1+q+1+q+1 : 结果- true
  • q+a+123 : 结果 - 假

如您所见,每个字符都必须被 + 包围才为真。

注意:只需要检查[a-zA-Z]之间的字符。如果字符串中没有任何字母表,那么它应该返回 true。 (例如:1+1+1 或 1++.25,+5 将返回 true)

我正在尝试使用正则表达式。但它不起作用。

public static bool IsValidPattern(string str)
{
return Regex.IsMatch(str, @"\?\+[a-zA-Z]\+$");
}

.NetFiddle

最佳答案

反过来检查是否有未包含在+中的字符消极地向前看,向后看:

public static bool IsValidPattern(string str)
{
return !Regex.IsMatch(str, @"((?<!\+)[a-zA-Z])|([a-zA-Z]+(?!\+))");
}

Fiddle here

简短说明:

| : 是与 ((?<!\+)[a-zA-Z]) 的左右匹配或 ([a-zA-Z](?!\+))

((?<!\+)是一个负向后视,它确保以下 ( [a-zA-Z] ) 之前没有 \+

((?!\+)是一个否定前瞻,确保前面的 ( [a-zA-Z] ) 后面没有 \+

所以第一个选择是匹配像 'a+', 'c+' 这样的字符串依此类推,第二个倒过来 ( '+a', '+c' ) 被认为是无效的。

关于c# - 查找所有包含 + 的字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46974483/

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