通常在执行正则表达式时,您可以执行[regex] {n}以指示您希望正则表达式应用于n个字符。或者你可以{n,m}表示n到m个字符。
个别情况怎么样?例如,如果我想做{4或8或12}?
答案 0 :(得分:2)
轮候将完成工作
<RichTextBox x:Name="CurrentBody" DataContextChanged="Differences_OnDataContextChanged" DataContext="{Binding CurrentDifferences}" IsReadOnly="True" IsReadOnlyCaretVisible="True" />
但如果A是一个很大的正则表达式,那么你将会复制很多不好的东西。不要使用一些正则表达式引擎来定义子正则表达式,然后重用它。我对这是否存在感兴趣,但我使用的.NET在正则表达式中不支持它。
当然,通过在正则表达式中从宿主语言中嵌入一些字符串变量,没有任何阻碍。
更新1
A{4}|A{8}|A{12}
可以匹配不同于
的内容A{12}|A{8}|A{4}
前一个可以被标记为贪婪,而后一个可以被标记为懒惰。
后者将匹配AAAAAAAA中的前4个A,而前者将匹配8个A&#39。
量词的默认行为是贪婪的,但是因为你不能使这个手工制作的构造变得懒惰?它只取决于你在2中选择时需要什么。如果你将它嵌入正则表达式中,你有时会想要懒惰的行为。 没有嵌入前者很可能是你想要的。
答案 1 :(得分:0)
{m, n}
只是重复交替的简写。也就是说,A{4,5}
只是AAAA|AAAAA
的缩写。正如Kevin在评论中指出的那样,你可以将一组任意长度表示为连续的连接范围,但一般来说这是不可能的。例如,任何有限的素数集(用一元表示法)都可以用正则表达式匹配:
11|111|11111|1111111|11111111111 # Your hypothetical 1{2 or 3 or 5 or 7 or 11}