簡體   English   中英

在字符串中查找正則表達式模式

[英]Find a Regex Pattern in a String

我正在嘗試從字符串中打印出圖案。

String stringToProcess = "Test Test Hello World Test Test";
String pattern = "Hello\\sWorld";
System.out.println(stringToProcess.substring(stringToProcess.indexOf(pattern), stringToProcess.lastIndexOf(pattern)));

當我運行此代碼時,根據我嘗試對其進行更改和修復的方式,似乎會出現很多錯誤。 如上所述,它給出了錯誤:

Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: -1

請注意:我已經知道Pattern.compile(regex, Pattern); 這樣的方式。 我想以其他方式來做。

這是您要求的示例:

    String stringToProcess = "Test Test Hello World Test Test";
    String patternString = "Hello\\sWorld";
    Pattern pattern = Pattern.compile(patternString);
    Matcher matcher = pattern.matcher(stringToProcess);
    if (matcher.find()) {
        int start = matcher.start();
        int end = matcher.end();
        System.out.println(stringToProcess.substring(start, end));
    }

東陽你真的想用\\\\s而不是一片空白,這也將匹配Hello\\tWorldHello\\nWorld和你好與世界之間的所有其他可能的單個空格字符。

我寫的方式只會打印找到的第一個匹配項(如果有),如果您想將所有匹配項打印到您的模式中, ifwhile替換。

但是如果不需要,我不會使用start()end()substring() ,如果要打印匹配項,可以只打印matcher.group()

這個函數返回句子的開始位置:

public  static int decodeString(String msg,String sentence) {
        Pattern p = Pattern.compile("(.*)"+sentence+"(.*)");
        Matcher m = p.matcher(msg);
        if (m.matches()) {
           return  m.end(1);
        }
        return -1;
    }

請注意,這給出了最后一個匹配項。 如果我們有一些匹配項,我們需要使用循環

暫無
暫無

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

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