使用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做些什么。
答案 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]
或\d
。 Demo
<强>参考文献:强>
\d
)\1
引用它)注意:由于这似乎是家庭作业,请询问您是否对我的解释之外的事情有何疑问,以便您学习一两件关于表达的内容:)< / p>
答案 1 :(得分:1)
4。全部小写,全部是一个字母(例如aaaaaaaaaaaaaaa)
5。全部大写,全部为一个字母(例如AAAAAAAAAAAAAAA)
因为这两个将是:
"^[a]{string.length}$"
"^[A]{string.length}$"
你应该能够确定其余的(提示:[]代表一组)
修改:更改模式以满足输入&#34;文本文件中每行一个&#34; 并且正则表达式需要匹配整条线。
答案 2 :(得分:0)
^([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}$
除非必须以数字开头,否则你就去了
for:^[0-9][a-zA-Z0-9]{string.length-1}$
^([0-9])\1{string.length-1}
请注意:
^
表示字符串的开头和$
字符串的结尾。这可以防止
部分匹配。(?i)
表示不区分大小写搜索的开始。