Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 用于看似简单任务的正则表达式模式_C#_Regex_String - Fatal编程技术网

C# 用于看似简单任务的正则表达式模式

C# 用于看似简单任务的正则表达式模式,c#,regex,string,C#,Regex,String,使用C# 我需要创建8个正则表达式模式来检查一组任意长度的字符串(文本文件中每行一个)。我试图将模式编写为字符串,然后稍后将其转换为Pattern 我相信我有: 一,。所有数字(如128329983928):“^[0-9]{string.length}$” 二,。所有小写字母(如aejksanikp):“^[a-z]{string.length}$” 三,。全大写(如AIJDJWIHJMNQ):“^[A-Z]{string.length}$” 我需要帮助的是: 四,。全部小写,全部为一个字母(如

使用C#

我需要创建8个正则表达式模式来检查一组任意长度的字符串(文本文件中每行一个)。我试图将模式编写为字符串,然后稍后将其转换为
Pattern

我相信我有:

一,。所有数字(如128329983928):
“^[0-9]{string.length}$”

二,。所有小写字母(如aejksanikp):
“^[a-z]{string.length}$”

三,。全大写(如AIJDJWIHJMNQ):
“^[A-Z]{string.length}$”

我需要帮助的是:

四,。全部小写,全部为一个字母(如AAAAAAAAAAAA)

五,。全大写,全一个字母(如aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa)

六,。任何情况下,一封信(如aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa)

七,。任何数字加上任何单个字母,任何情况下:(例如1420A843aa830a3237A)

八,。任何单个数字(如22222)

对于数字4、5和8,我可以只做一些|(或),但我希望有一种比
“a | b | c | d | e..{string.length}”更好的方法
。我真的不知道6点和7点该怎么办

四,。全部小写,全部为一个字母(如AAAAAAAAAAAA)

五,。全大写,全一个字母(如aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa)

因为这两个将是:

"^[a]{string.length}$"
"^[A]{string.length}$"
您应该能够确定其余部分(提示:[]表示一个集合)

编辑:更改了模式,以适应输入是“文本文件中每行一个”的事实,并且regexp需要匹配整行。

4)。它从字符串(或行,如果
m
修饰符)的开始(
^
)到结束(
$
)。它捕获一个字母字符(
([a-z])
),然后查找该捕获的字符0多次(
\1*

5) 。执行相同的操作,但首先捕获组
[A-Z]

6) 。您可以使用
[a-Z]
[a-Z]
[a-zA-Z]
,或者只使用
i
修饰符使其不区分大小写。(带修饰语)

7) 。这个有点棘手。我们仍然像以前一样使用锚点
^
$
。但是现在我们寻找0+个数字并捕获一个字母字符(这意味着字母可以位于第一位,也可以位于一些数字之后)。在此之后,我们将查找数字或捕获的字母0+次,直到结束。听起来像是一个字母是必选的;但是,如果希望它是可选的,则可以在捕获的字母(
([a-z])?
)后面放置一个
)。请记住,使用
i
修饰符使这一个不区分大小写,或者用
[a-zA-Z]
替换捕获组

8) 。将示例1中的
[a-z]
替换为
[0-9]
\d


参考文献:

  • (即
    \d
  • (我们使用它捕获字符并用
    \1
    引用它)

注意:由于这看起来像是家庭作业,请询问您是否有超出我解释范围的问题,以便您了解有关表达式的一两件事:)

  • ^([a-z])\1{string.length-1}$
  • ^([A-Z])\1{string.length-1}$
  • ^(?i)([a-z])\1{string.length-1}$
  • ^([a-zA-Z0-9]){string.length-1}$
    除非它必须以数字开头,否则您就可以 适用于:
    ^[0-9][a-zA-Z0-9]{string.length-1}$
  • ^([0-9])\1{string.length-1}
  • 请注意:

    • ^
      表示字符串的开头和
      $
      字符串的结尾。这防止了 部分匹配
    • (?i)
      表示开始不区分大小写的搜索

    头朝上:四处测试?简单得多,去掉括号和大括号:
    a+
    a+
    。不要忘记字符串开始/结束:
    ^a+$
    ^a+$
    。否则,像“bbbaaacsfdfdf”这样的字符串也会导致匹配……写入任何regexp的方法总是不止一种,上面提供的方法确实会执行所需的匹配。我是说用户需要理解[]在regexp中代表什么。啊,好吧,我觉得你的声明提到了我的全部评论。如果您只谈论括号,那么是的,我同意您的看法:-)但它仍然不是给定任务“所有小写字母,所有一个字母”和“所有大写字母,所有一个字母”的解决方案,因为缺少“^”和“$”标记,现在只需编辑您的答案。我想撤销我的-1(鉴于这里的评论为您的答案提供了一些相关的上下文),但我不能,因为它已被锁定(自从我设置它以来已经超过20分钟了),现在撤销它需要对答案进行编辑。。。啊…+1你在提到匹配“整个字符串”的重要性时击败了我。我建议使用正则表达式工具并使用变体。这里有一个:但是还有很多其他的。唯一需要注意的是,数字7听起来好像只有一个字母(不区分大小写)(类似于1和6的组合)。
    ^([a-z])\1*$
    
    ^\d*([a-z])(\d|\1)*$