我是 regix 的新手。 我只想从以下行获取端口号:
输入:
Install: C:\Program Files\app
Database: postgresql://127.0.0.1:42018/app
Started: 2016-12-28 10:40:05.908000
Lines: 1000000
Version: 4.1
PID: 1736
我试过遵循正则表达式,
[\d]{5}
但是它选择了所有 42018、10000 和 90800
从上面的输入中,我只想提取端口号 42018
请您参考如下方法:
您可以捕获您需要的值到捕获组中并使用相应的代码访问它。
Java 和 Python 的正则表达式看起来像
postgresql://[\d.]+:(\d+)\b
详细信息:
postgresql://- 文字字符串postgresql://[\d.]+- 1 个或多个数字或.符号:- 冒号(\d+)- 第 1 组捕获 1 个或多个数字\b- 单词边界。
参见 Java demo :
String s = "Install: C:\\Program Files\\app\nDatabase: postgresql://127.0.0.1:42018/app\nStarted: 2016-12-28 10:40:05.908000\nLines: 1000000\nVersion: 4.1\nPID: 1736";
Pattern pattern = Pattern.compile("postgresql://[\\d.]+:(\\d+)\\b");
Matcher matcher = pattern.matcher(s);
if (matcher.find()){
System.out.println(matcher.group(1));
}
参见 Python code :
import re
s = "Install: C:\\Program Files\\app\nDatabase: postgresql://127.0.0.1:42018/app\nStarted: 2016-12-28 10:40:05.908000\nLines: 1000000\nVersion: 4.1\nPID: 1736";
pattern = r"postgresql://[\d.]+:(\d+)\b"
m = re.search(pattern, s)
if m:
print(m.group(1))
