Skip to content

使用正则表达式

快捷符号

  • \d表示[0—9]
  • \D表示[^0—9]
  • \w表示[0—9A—Z_a—z]
  • \W表示[^0—9A—Z_a—z]
  • \s表示[\t\n\r\f]
  • \S表示[^\t\n\r\f]

使用示例

匹配符号

字符串最后一个字符匹配,检查是否符号

    private boolean strEndsWithMark(String s) {
        if (!TextUtils.isEmpty(s)) {
            String e = s.substring(s.length() - 1);
            return e.matches("[`~!@#$%^&*()+=|{}':;',\\\\[\\\\].<>/?~!@#¥%……&*()——+|{}【】‘;:”“’。,、?'’]");
        }
        return false;
    }

至少有1个汉字

汉字正则表达式是[\u4e00-\u9fa5]。在Java中需要\\来表示\。 我们用PatternMatcher来寻找符合条件的字符。

String reg = "[\\u4e00-\\u9fa5]" // 代码中\需要转义
boolean res = Pattern.compile(reg).matcher(input).find();

idea输出。输出的时候注意反斜杠显示的数量。

reg: [\u4e00-\u9fa5]
input: 你好           ; reg: [\u4e00-\u9fa5] => true
input: 你好.txt       ; reg: [\u4e00-\u9fa5] => true
input: 你好.log       ; reg: [\u4e00-\u9fa5] => true
input: a你a好a.txt    ; reg: [\u4e00-\u9fa5] => true
input: a你a好a.txt    ; reg: [\u4e00-\u9fa5] => true
input: a.xtxt       ; reg: [\u4e00-\u9fa5] => false
input: abctxtlog    ; reg: [\u4e00-\u9fa5] => false
input: xx.xlog      ; reg: [\u4e00-\u9fa5] => false

以某段字符结尾

Java中的正则,需要用\.来代表点号 .

  • $ 匹配输入字符串结尾的位置。如果设置了 RegExp 对象的 Multiline 属性,$ 还会与"\n"或"\r"之前的位置匹配。
  • \.txt 表示要符合.txt条件,即 txt

.txt为结尾,Java中正则表达式如下,注意这2个反斜杠\\

"\\.txt$"

查询的Java代码如下,用PatternMatcher来寻找。

boolean res = Pattern.compile(reg).matcher(input).find();

输出示例。输出的时候注意反斜杠显示的数量。

reg: \.txt$
input: 你好           ; reg: \.txt$    => false
input: 你好.txt       ; reg: \.txt$    => true
input: 你好.log       ; reg: \.txt$    => false
input: a你a好a.txt    ; reg: \.txt$    => true
input: a.xtxt       ; reg: \.txt$    => false
input: abctxtlog    ; reg: \.txt$    => false
input: xx.xlog      ; reg: \.txt$    => false
input: txt.log      ; reg: \.txt$    => false
input: log.txt      ; reg: \.txt$    => true
input: .txt.log     ; reg: \.txt$    => false
input: .log.txt     ; reg: \.txt$    => true

这里的正则表达式只设定了1个条件:以xx为结尾。

同理,我们可以很容易得出.log.png,.jpg结尾的正则表达式。