【问题标题】:regex to retrieve specific url from text [duplicate]正则表达式从文本中检索特定的 url [重复]
【发布时间】:2016-02-15 08:00:18
【问题描述】:

我使用的 API 返回以下文本:

<http://192.168.1.10:8080/longUrl>; rel="recording-session",
<http://192.168.1.10:8080/realLongUrl>; rel="h264-session-sdp", 
<http://192.168.1.10:8080/realLongDifferentUrl>; rel="h264-session-sdp", 
<rtp://239.1.1.18:5006>; rel="destination-high", 
<rtp://239.1.1.17:5006>; rel="destination-low"

我正在尝试检索后跟 ; rel="h264-session-sdp 的第一个 URL。

所以在这种情况下应该是:http://192.168.1.10:8080/realLongUrl

我一直在尝试修改在 SO 上找到的示例,但似乎可以做到。

【问题讨论】:

  • 你能展示一些无效的正则表达式吗?
  • 主要是尝试修改此处找到的正则表达式示例:stackoverflow.com/a/413165/1577926。用我自己的分隔符替换大括号。我不断得到匹配中的分隔符以及内容。

标签: javascript regex match


【解决方案1】:

试试这个/([^&lt;]+)(?:&gt;; rel\=\"h264\-session\-sdp\")/

【讨论】:

  • 我相信 OP 希望它可用于多个 API 调用,因此它也适用于 &lt;rtp://239.1.1.17:5006&gt;; rel="destination-low"
  • 这将只返回 FIRST mutch
【解决方案2】:

选择大于和小于字符之间的文本:

?)

https://regex101.com/r/oS5sX6/1

如果您想在多行中选择网址,请添加 g 和 m 修饰符:

/(?)/gm

https://regex101.com/r/oS5sX6/2

【讨论】:

  • 试图将其修改为仅我需要的那个,但它说它无效.... SyntaxError: invalid regexp group var res = linkHeaders.match( /(?&lt;=\&lt;)(.*?)(?=\&gt;)&gt;; rel=\"h264-session-sdp\"/ );
  • 尝试var res = linkHeaders.match( /(?&lt;=\&lt;)(.*?)(?=\&gt;)&gt;; rel=\"h264-session-sdp\");注意删除的结尾斜线
【解决方案3】:

试试这个:

/(?<=\<)(.*?)(?=\>)>; rel="h264-session-sdp"/

【讨论】:

    猜你喜欢
    • 2018-01-20
    • 2018-09-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多