regex 处理3位数字或连字符的正则表达式

e0uiprwp  于 2023-03-13  发布在  其他
关注(0)|答案(3)|浏览(202)

我需要一个正则表达式来处理血压,例如:“145/80”一些血压值为空,例如:“-/80”或“145/-”
我现在可以用它来处理数字,但如何处理连字符呢?^\d{1,3}/\d{1,3}$

ozxc1zmp

ozxc1zmp1#

在正则表达式中使用OR表达式(|):

^(\d{1,3}|-)/(\d{1,3}|-)$
  • (\d{1,3}|-)-一到三位数字或连字符
  • /-斜线
  • (\d{1,3}|-)-一到三位数字或连字符

这是一个working example

cqoc49vn

cqoc49vn2#

使用|表示“或”:

import java.util.regex.*;

public class BloodPressure {
    private static final String numbersOrDash = "(-|\\d{1,3})";
    private static final Pattern pattern = Pattern.compile("^" + numbersOrDash + "/" + numbersOrDash + "$");

    public static void main(String... args) {
        for (String a : args) {
            Matcher m = pattern.matcher(a);
            if (m.matches()) {
                System.out.println(a + " looks like a blood pressure");
            }
            else {
                System.out.println(a + " does not look like a blood pressure");
            }
        }
    }
}

我还添加了^$,分别将正则表达式锚定到输入的开头和结尾,这样,例如“abc 1/-”就不匹配了。
通过一些测试值:

robert:~$ java BloodPressure.java  a 20/- -/20 80/120
a does not look like a blood pressure
20/- looks like a blood pressure
-/20 looks like a blood pressure
80/120 looks like a blood pressure
to94eoyn

to94eoyn3#

这只会将systolicdiastolic作为一个单元来查找。

  • |
  • \\d{1,3}- 1至3位数字
String s = "-/80 120 abc -120  120/-  80-  80 de  120/80";
 Matcher m = Pattern.compile("(\\d{1,3}|-)/(\\d{1,3}|-)").matcher(s);
 while (m.find()) {
     System.out.println(m.group());
 }

印刷品

-/80
120/-
120/80

相关问题