簡體   English   中英

Java Regex +如何在字符串中找到匹配的模式

[英]Java Regex + How to find a matching pattern within a String

我得到一個包含逗號分隔數據的csv文件。 其中一些數據可能包含excel單元格編號,例如b1,b2,c1,代表MS excel單元格編號

CSV數據示例

b1,2 3 4 b1,5 c2 3 d2,5 4,2 e1

我需要確定是否有任何csv數據包含a1或c1或b1之類的數據。

即我需要查找數據是否包含字符和數字。

我已經使用JAVA正則表達式編寫了以下程序。

當數據僅包含b1或c1時,此方法確實起作用,但是當數據之前或之后包含更多字符時,則無法找到b1或c1。

例如

示例1可以正常打印

package com.test;

public class PatternTest {

    public static void main(String[] args) {
        String pattern = "(([A-Za-z].*[0-9]))";

        String data = "b2";
        if(data.matches(pattern)){
            System.out.println("true");
        }else{
            System.out.println("false");
        }

    }

}

示例2不起作用,並顯示false。 如何使示例2起作用,以便它可以在包含前后更多字符的字符串中找到b1或c1或a1或a2

package com.test;

public class PatternTest {

    public static void main(String[] args) {
        String pattern = "(([A-Za-z].*[0-9]))";

        String data = "1 b2 3 4 ";
        if(data.matches(pattern)){
            System.out.println("true");
        }else{
            System.out.println("false");
        }

    }

}

請忽略。 我找到了如下所示的解決方案

package com.test;

public class PatternTest {

    public static void main(String[] args) {
        String pattern = "((.*[A-Za-z].*[0-9].*))";

        String data = "c2 3 c2 *";
        if(data.matches(pattern)){
            System.out.println("true");
        }else{
            System.out.println("false");
        }



    }

}

您可以這樣做:

String str = "b1, 2 3 4 b1, 5 c2 3 d2, 5 4, 2 e1";
if (str.matches(".*\\p{Alpha}\\d.*")) {
    System.out.println(true);
} else {
    System.out.println(false);
}
// Result is true for current str

在您自己回答的情況下不需要的字符串b22,b&2,cc3等也將true

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM