1. =~ m/^[0-9]+$/ 用于匹配正则表达式
2. my $celeise = <STDIN> 从键盘输入。类似于java的 new BufferedReader(new
InputStreamReader(System.in));
3. chomp($celeise); 删除$celeise中的结尾符号
4. (?:) 用这种写法的括号可以不计数在groupcount中
5. \s 在正则表达式中 匹配 所有的空白字符
6. 忽略大消息: =~ m//i 这种正则表达式表示忽略大小写
7. 替换: =~ s/[0-9]+/m/gi 表示将其中的数字全部替换成m,不区分大小写
8. 单词: \b\w+\b 在正则中表示匹配任意一个单词(可以在开头、中间、结尾)。
9. 环视: (?<= jeff) 表示 左侧的是jeff, (?=jeff) 表示右侧的是jeff
例子:
String str = "I have 1230001234 dollars";
Pattern pattern = Pattern.compile("(?<=\\d)(?=(\\d{3})+\\b)", Pattern.CASE_INSENSITIVE); // 如果末尾不加 \\b,则不能保证是3的倍数
Matcher matcher = pattern.matcher(str);
if (matcher.find()) {
str = matcher.replaceAll(",");
}
after replace: str = I have 1,230,001,234 dollars
10.反向引用
Pattern pattern = Pattern.compile("\\b([a-z]+)\\b\\s*\\n*\\b\\1\\b", Pattern.CASE_INSENSITIVE); // 查找两个相邻(包括换行)的单词
11. 不区分大小写:(?i)content(?-i) content不区分大小写
12. 正则中匹配含有转义字符的方法为: opening normal* (special normal*)* 对应的正则表达式例子为: "[^\\"]*(\\.[^\\"]*)*"
原则01: special 和normal部分的开头不能匹配相同的字符
原则01:normal 至少能匹配一个字符
原则03: