String 如何在字符串和正则表达式之间切换,而不使用起始词和结束词?

String 如何在字符串和正则表达式之间切换,而不使用起始词和结束词?,string,expression,between,String,Expression,Between,如何在字符串和正则表达式之间进行转换?结果字符串不应包含起始词和结束词?我在谷歌上搜索,没有答案 原始字符串: 所需字符串: xxx.168.x.xxx 我的正则表达式是: /[\s\s]*(?=/d)结果://xxx.168.x.xxx /[\s\s]*(?=/d)结果://xxx.168.x.xxx 有什么建议吗?谢谢。如果您总是想以这种形式从URL中提取IP地址,您可以使用以下方法: [^/]*(?=/delete) 它的优点是不依赖于查找或捕获组。试试这个:/(.*.168\.*?

如何在字符串和正则表达式之间进行转换?结果字符串不应包含起始词和结束词?我在谷歌上搜索,没有答案

原始字符串:

所需字符串:

xxx.168.x.xxx


我的正则表达式是:

  • /[\s\s]*(?=/d)结果://xxx.168.x.xxx
  • /[\s\s]*(?=/d)结果://xxx.168.x.xxx

  • 有什么建议吗?谢谢。

    如果您总是想以这种形式从URL中提取IP地址,您可以使用以下方法:

    [^/]*(?=/delete)
    
    它的优点是不依赖于查找或捕获组。

    试试这个:
    /(.*.168\.*?\.*?)/

    以Python为例:

    >>> p=re.compile('//(.*?\.168\..*?\..*?)/')
    >>> s='http://xxx.168.x.xxx/delete/568b96fb75b2'
    >>> p.findall(s)
    ['xxx.168.x.xxx']
    >>> p2=re.compile('//[\s\S]*(?=/d)')
    >>> p2.findall(s)
    ['//xxx.168.x.xxx']
    >>> p3=re.compile('[^/]*(?=/delete)')
    >>> p3.findall(s)
    ['xxx.168.x.xxx', '']
    
    因为您可能正在检测IP地址,所以这一个可能更好:
    /([0-9]*?\.168\.[0-9]*?\.[0-9]*?)/
    在Python中:

    >>> s1='http://192.168.1.1/delete/fjdsafdasfdsa'
    >>> p4=re.compile('//([0-9]*?\.168\.[0-9]*?\.[0-9]*?)/')
    >>> p4.findall(s1)
    ['192.168.1.1']
    

    谢谢你的回复。实际上,我的原稿来自一个复杂的字符串:{“Version”:“1.0”,“status”:“0”,“Uri”:“}。我试过你的,结果是/xxx.168.x.xxx。结果字符串的前面有一个正斜杠。奇怪的是,它在开头包含了一个斜杠,[^/]应该匹配任何非斜杠的内容。在正则表达式的开头有多余的斜杠吗?您使用的是什么regex实现?