我正在尝试构建一个正则表达式,匹配两个正斜杠之间的正则表达式。 我的主要问题是正则表达式本身可以包含正斜杠,由反斜杠转义。 我尝试用负面的lookbehind断言过滤掉它们(如果当前位置没有反弹,只匹配结束斜线),但是,现在我遇到的问题是我没有得到匹配,如果正则表达式本身实际上以转义反斜杠结尾。

测试程序:

#!/usr/bin/python
import re
teststrings=[
     """/hello world/""", 
     """/string with foreslash here \/ and here\//""",
     """/this one ends with backlash\\\\/"""]

patt="""^\/(?P<pattern>.*)(?<!\\\\)\/$"""

for t in teststrings:
    m=re.match(patt,t)
    if m!=None:
        print t,' => MATCH'
    else:
        print t," => NO MATCH"

输出:

/hello world/  => MATCH
/string with foreslash here \/ and here\//  => MATCH
/this one ends with backlash\\/  => NO MATCH

如果当前位置只有一个反弹,而不是两个反弹,我如何修改断言?

或者有更好的方法来提取正则表达式? (注意,在实际文件中,我尝试解析行不仅包含正则表达式。我不能简单地搜索每行的第一个和最后一个斜杠,并将其中的所有内容都放在其中。)

===============>>#1 票数:17 已采纳

尝试这个:

pattern = re.compile(r"^/(?:\\.|[^/\\])*/")

说明:

^       # Start of string
/       # Match /
(?:     # Match either...
 \\.    # an escaped character
|       # or
 [^/\\] # any character except slash/backslash
)*      # any number of times.
/       # Match /

对于你的“真实世界”应用程序(找到第一个“斜线划分的字符串”,无视转义斜线),我会使用

pattern = re.compile(r"^(?:\\.|[^/\\])*/((?:\\.|[^/\\])*)/")

这将为您提供以下内容:

>>> pattern.match("foo /bar/ baz").group(1)
'bar'
>>> pattern.match("foo /bar\/bam/ baz").group(1)
'bar\\/bam'
>>> pattern.match("foo /bar/bam/ baz").group(1)
'bar'
>>> pattern.match("foo\/oof /bar\/bam/ baz").group(1)
'bar\\/bam'

  ask by Gryphius translate from so

未解决问题?本站智能推荐:

2回复

如何使用正则表达式匹配包含两个反斜杠的字符串

我必须编写一个引用字符串的正则表达式。我需要获取“ $ u”和最后一个“ $”之间的部分,还需要匹配“ $ u”之前的部分。现在,我编写如下正则表达式,但它不起作用
2回复

正则表达式用斜杠比较两个字符串

假设我有以下字符串 以下字符串应该都匹配 我想要一个可以用来比较这些字符串的正则表达式。 正则表达式甚至可以这样吗?
2回复

两个字符串之间的正则表达式匹配?

我似乎找不到像以下示例中那样提取所有评论的方法。 由于正则表达式不正确,最不可能匹配two -- --块。 有人可以指出正确的方向如何提取两个字符串之间的匹配项吗? 嗨,我已经测试了你们在评论中提出的建议...。 谢谢!
2回复

设计正则表达式以排除带有反斜杠的字符串部分

我正在尝试从具有额外字符的csv文件中清除一列字符串。 我正在尝试使用以下正则表达式: (r'([A-Za-z0-9\\s]+)')在诸如'Robert Johnson\\xa0'字符串上仅提取'Robert Johnson' ,但是结果字符串不变。 不知道如何修改正则表达式,以便最终字符串中不包括
2回复

使用正则表达式使用反斜杠拆分字符串

对于python程序,我有一个输入,我从stdin ,输入是这样的: 当我将其打印为字符串值时,它将按原样打印。 我试图将字符串拆分为基于正向和反向斜线的字符串列表,同时保持分隔符。 我用过这样的东西: 但我得到的结果是: 我更期待它是这样的: 我在这里做错了
2回复

在python字符串和正则表达式中使用斜杠

例: 我发现这两个语句输出相同的结果: [' ', ' '] ,这表明\\s和\\\\s在Python的字符串类中是相同的。 实际上,当我在Python的交互界面中键入以下代码时,我得到了: 因此,似乎python会将\\s转换为\\\\s 。 Python为什么要这样做,这
1回复

正则表达式匹配空格和字符串,直到正斜杠为止

我有两个Django URL, 网址中的正则表达式([\\w|\\W\\-\\.])$匹配soccer players和soccer players/users 。 有人可以帮忙获取与groups和/之间的任何内容匹配的正则表达式吗? 我希望正则表达式在组之后匹配任何东西,直到遇到/
1回复

Python:正则表达式和包含反斜杠的字符串组成的组

这个问题已经在这里有了答案: 蟒蛇重新“假性逃生错误” 4个答案 Windows 7 64位上的Python 3.6.7 64位 我想从mystring中提取“目录”。 使用mydir = re.search(r':(.+)\\', mystring)
2回复

字符串正则表达式两个不匹配的Python

如何扩展下面的代码以允许我探索我的子字符串和父字符串之间有2个不匹配或更少的所有实例? 子串: SSQP 字符串匹配到: SSPQQQQPSSSSQQQSSQPSPSQSSQPSSQPPSSSSQPSPSQSSQPSSSSQPSPSQSSQPSSSSQPSPSQ 以下是仅包含一
1回复

在正则表达式中,如何匹配两个不同的字符串

我正在尝试使用ls命令从文件列表中获取字符串。 我有两种情况: 在python中,我执行了以下代码: 我所做的RE: 在相同的RE中获得此结果的RE是什么: