在Java中匹配正则表达式中的特定数字

时间:2014-08-28 10:04:51

标签: java regex

我有两个字符串数据。我的要求是 - 如果相应的数字完全相同或者其中一个或两个都是?,则两个字符串应匹配。因此,只有当相应的数字不同时,两个字符串才会有所不同。

String str1 = "??56??77??";
String str2 = "??????77??";

我不想进行while循环并逐位进行数字比较。有没有办法可以使用Java Regex实现它。

粗略的想法是将str1设为类似

的模式
str1 = [0-9][0-9][5?][6?][0-9][0-9][7?][7?][0-9][0-9]

但我怎么能用5代替5?

请帮忙。

1 个答案:

答案 0 :(得分:0)

  

粗略的想法是将str1设为类似

的模式      

str1 = [0-9] [0-9] [5?] [6?] [0-9] [0-9] [7?] [7?] [0-9] [0-9 ]   但我怎么能用5代替5?

是的,您可以使用|而不是(5|?)

[5?]

所以你的模式会变成:

str1 = [0-9][0-9](5|?)(6|?)[0-9][0-9](7|?)(7|?)[0-9][0-9]

我仍然没有得到你的?或者[0-9]在你的例子中,具体案例最容易提供帮助。因为这个人不匹配你的str2 = "??????77??"

如果str2确实如此,那么正确的正则表达式将是??(5|?)(6|?)??(7|?)(7|?)??

我不能告诉我,因为我真的不明白你的投入......

根据您的需要进行编辑,您可以使用它here

  String str1 = "??56??77??";
    String pattern = "";
    for(int i = 0; i < str1.length(); i++){
      char b = str1.charAt(i);
      if (b == '?') {
        pattern += "[0-9]";
      } else {
        pattern += "["+b+"?]";
      }
    }
    System.out.print(pattern);