Regex 不带*运算符的正则表达式
这是我的输入文本:Regex 不带*运算符的正则表达式,regex,Regex,这是我的输入文本: String input = "Current year is: 2014"; 我只想使用POSIX字符类查找第一个字母单词(没有数字)。以下正则表达式工作并发现“当前” String pattern = "\\p{Alpha}*"; //Current 但我不允许使用*运算符。因此,我的问题是,如果不使用*,如何获得相同的结果 使用+: String pattern = "\\p{Alpha}+"; 这几乎是一样的,只允许“零”出现。您可以使用{n,}量词,例如:
String input = "Current year is: 2014";
我只想使用POSIX字符类查找第一个字母单词(没有数字)。以下正则表达式工作并发现“当前”
String pattern = "\\p{Alpha}*"; //Current
但我不允许使用*运算符。因此,我的问题是,如果不使用*,如何获得相同的结果 使用+:
String pattern = "\\p{Alpha}+";
这几乎是一样的,只允许“零”出现。您可以使用
{n,}
量词,例如:
String pattern = "\\p{L}{0,}";
如果你不能使用*,这意味着0或更多,那么
{0,}
?怎么办?但是我不允许使用*operator为什么?我正在制作一些课程幻灯片和操作符+,*?等以后再来,在这个例子之后再展示?正确的方法是使用*
量词。。。另一种方法是使用{0,}
作为量词,但如果这是一门课程,我建议您同时检查所有量词。我认为您应该选择一个在引入迭代运算符之前不需要提取特定类的示例。我强烈建议在字符类之前引入Kleene闭包。Kleene闭包是regexp的一个基本部分。可以使用Kleene闭包(a++
=aa*
)来模拟+
运算符,以便稍后介绍。regexp的核心是字符文字、any
匹配(
)、Kleene闭包(*
)和交替(|
)。其他一切都只是为了方便而扩展。OP在评论中说,+
也是不允许的。我不知道你可以省略最大值!谢谢你的建议。