[英]Extracting numbers from String through Regex in Java
我創建了一個程序,該程序從油灰中獲取字符串,並從該字符串中獲取processID,從而殺死了processID。 目前,它工作正常,但有時不可靠。
請在下面找到我使用的目標和正則表達式。
目標字符串 : root 14139 1 25 Aug03 ? 06:47:50 /usr/local
root 14139 1 25 Aug03 ? 06:47:50 /usr/local
我使用的RegEx : \\\\\\d{3,5}
我想獲得RegEx,它可以找到root之后的立即數,而忽略其他文本。 (例如,我想從示例字符串中提取14139,以刪除所有多余的空間。)
我該怎么做?
因此,您需要第二個字段中以空格分隔的數字。 以下正則表達式在捕獲組中將其獲取:
^\S+\s+(\d+)
演示: https : //regex101.com/r/bE7xL8/1
以及示例Java代碼:
String input = "root 14139 1 25 Aug03 ? 06:47:50 /usr/local";
Pattern pattern = Pattern.compile("^\\S+\\s+(\\d+)");
Matcher matcher = pattern.matcher(input);
if (matcher.find()) {
System.out.println(matcher.group(1));
}
演示: https : //ideone.com/LVLCNm
再次使用捕獲組,這會更加寬容,並減少對空間數量的依賴:
root[^\\d]*(\\d+)
您可以使用以下正則表達式並使用第一組: root[^\\S]*(\\d+)
嘗試使用此方法為目標字符串提供所需的輸出。
import java.util.regex.Matcher;
import java.util.regex.Pattern;
class exampleproblem {
public static void main(String[] args) {
String target = "root 14139 1 25 Aug03 ? 06:47:50 /usr/local";
String regexex = "root(.[0-9]+)";
Pattern pattern = Pattern.compile(regexex);
Matcher matcher = pattern.matcher(target);
while (matcher.find()) {
System.out.println(matcher.group(1).trim());
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.