看似简单的任务的正则表达式模式

时间:2014-04-17 01:06:10

标签: c# regex string

使用C#

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

我认为我拥有的那些:

1。所有数字(例如128329983928):"^[0-9]{string.length}$"

2。全部小写(例如aejksanikp):"^[a-z]{string.length}$"

3。全部大写(例如AIJDJWIHJMNQ):"^[A-Z]{string.length}$"

我需要帮助的人:

4。全部小写,全部是一个字母(例如aaaaaaaaaaaaaaa)

5。全部大写,全部为一个字母(例如AAAAAAAAAAAAAAA)

6。任何情况,一个字母(例如AAaaaAaaAAAaAAaa)

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

8。任何单个数字(例如22222222222222)

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

3 个答案:

答案 0 :(得分:2)

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

^([a-z])\1*$

5)。做同样的事情,但最初捕获组[A-Z]Demo

6)。您可以使用[a-Z][A-z][a-zA-Z],也可以使用i修饰符使其不区分大小写。 Demo(带修饰符)。

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

^\d*([a-z])(\d|\1)*$

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


<强>参考文献:


注意:由于这似乎是家庭作业,询问您是否对我的解释之外的事情有何疑问,以便您学习一两件关于表达的内容:)< / p>

答案 1 :(得分:1)

  

4。全部小写,全部是一个字母(例如aaaaaaaaaaaaaaa)

     

5。全部大写,全部为一个字母(例如AAAAAAAAAAAAAAA)

因为这两个将是:

"^[a]{string.length}$"
"^[A]{string.length}$"

你应该能够确定其余的(提示:[]代表一组)

修改:更改模式以满足输入&#34;文本文件中每行一个&#34; 并且正则表达式需要匹配整条线。

答案 2 :(得分:0)

  1. 确定
  2. 确定
  3. 确定
  4. ^([a-z])\1{string.length-1}$
  5. ^([A-Z])\1{string.length-1}$
  6. ^(?i)([a-z])\1{string.length-1}$
  7. ^([a-zA-Z0-9]){string.length-1}$除非必须以数字开头,否则你就去了 for:^[0-9][a-zA-Z0-9]{string.length-1}$
  8. ^([0-9])\1{string.length-1}
  9. 请注意:

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