[英]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\\tWorld
, Hello\\nWorld
和你好與世界之間的所有其他可能的單個空格字符。
我寫的方式只會打印找到的第一個匹配項(如果有),如果您想將所有匹配項打印到您的模式中, if
用while
替換。
但是如果不需要,我不會使用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.