Java regex-从字符串中提取数字。数字应该是我输入的前5位数字
我是新来的。 我只想从以下行获取端口号: 输入:Java regex-从字符串中提取数字。数字应该是我输入的前5位数字,java,python,regex,Java,Python,Regex,我是新来的。 我只想从以下行获取端口号: 输入: 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 我试着跟着regex [\d]{5} 但它选择了所有 42018、10000和90800 从上面的输入中,我只想提取端口号42018我不确定regex是
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
我试着跟着regex
[\d]{5}
但它选择了所有
42018、10000和90800
从上面的输入中,我只想提取端口号
42018
我不确定regex是否是您的最佳选择,根据编程语言,您可能希望使用一些库提取端口
如果您仍然坚持使用正则表达式,则应使其更加具体,例如:
postgresql:[^:]+:(\d+)
我不确定正则表达式是否是您在这里的最佳选择,根据编程语言的不同,您可能希望使用一些库来提取端口 如果您仍然坚持使用正则表达式,则应使其更加具体,例如:
postgresql:[^:]+:(\d+)
您可以将所需的值捕获到捕获组中,并使用相应的代码访问它
Java和Python的正则表达式可以如下所示
postgresql://[\d.]+:(\d+)\b
详细信息:
-一个文本字符串postgresql://
postgresql://
-1个或多个数字或[\d.]+
符号
-冒号:
-第1组捕获1个或多个数字(\d+)
-单词边界\b
postgresql://[\d.]+:(\d+)\b
详细信息:
-一个文本字符串postgresql://
postgresql://
-1个或多个数字或[\d.]+
符号
-冒号:
-第1组捕获1个或多个数字(\d+)
-单词边界\b
要检测的regexpprotocol://ipaddr:port 模式并捕获其中的“端口”部分。 请记住,您不应该使用完整的匹配,而应该捕获GROUP值(如何做-取决于您使用的编程语言)
要检测的regexpprotocol://ipaddr:port 模式并捕获其中的“端口”部分。 请记住,您不应该使用完整的匹配,而应该捕获GROUP值(如何做-取决于您使用的编程语言) 您可以使用正则表达式: postgresql:/(\d+。?){4}:(\d+)/app 您可以使用正则表达式: postgresql:/(\d+。?){4}:(\d+)/app 这可能有助于提供示例输入
这可能有助于给定的示例输入。如果您想在任何情况下提取每五位数字,请使用
(?:^ |[^\\d])[\\d]{5}(?:$|[^\\d])
。不要像上面的答案那样使用\b。这不区分字母和数字的边界,如44000e、e44000。如果您想在任何情况下提取每五位数字,请使用(?:^ |[^\\d])[\\d]{5}(?:$|[^\\d])
。不要像上面的答案那样使用\b。这不区分字母和数字的边界,如44000e、e44000。什么是编程语言?看,捕获5位数字很容易,如中所示。我想在java和python中做同样的事情。到现在为止,我只尝试从什么是编程语言?看,捕获5位数字很容易,如中所示。我想在java和python中做同样的事情。到现在为止,我只想从中选择42018。但是postgresql:[^::+:(\d+)
选择postgresql://127.0.0.1:42018@CMY您应该只获得第一组。我只想选择42018。但是postgresql:[^::+:(\d+)
选择postgresql://127.0.0.1:42018@CMY您应该只获得第一组。
[a-z]+\:\/\/[\d]+\.[\d]+\.[\d]+\.[\d]+\:(\d+)
\d{5}(?=\/app)