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://
  • [\d.]+
    -1个或多个数字或
    符号
  • -冒号
  • (\d+)
    -第1组捕获1个或多个数字
  • \b
    -单词边界
见:

见:

您可以将所需的值捕获到捕获组中,并使用相应的代码访问它

Java和Python的正则表达式可以如下所示

postgresql://[\d.]+:(\d+)\b
详细信息

  • postgresql://
    -一个文本字符串
    postgresql://
  • [\d.]+
    -1个或多个数字或
    符号
  • -冒号
  • (\d+)
    -第1组捕获1个或多个数字
  • \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)