0

目前,在 Python 程序中,我使用

self.regex_string = re.compile("^\w+(-\w+)*$")

检查字母数字加连字符的输入字符串。

我需要更改正则表达式以允许前斜杠( / )

我迷失在正则表达式的森林里。有人可以建议对我的正则表达式进行更改,将前斜杠添加到允许的字符中吗?

或者,是否有更有效的正则表达式允许( Az、az、0-9、- 和 / )没有空格?

谢谢

4

2 回答 2

1

也允许对您的正则表达式进行小幅更改,以便在每个地方\w/允许:

^(\w|/)+(-(\w|/)+)*$

如果您使用的是替换组,则组编号会因附加括号而随此正则表达式更改。在 Python 源代码中,您可以使用原始字符串来避免在\大多数情况下转义 s:

self.regex_string = re.compile(r'^(\w|/)+(-(\w|/)+)*$')

奖励,另外拒绝包含//请求的字符串:

self.regex_string = re.compile(r'^(\w|/(?!/))+(-(\w|/(?!/))+)*$')

这使用了一个零宽度的负前瞻断言/(?!/),意思是“斜线后面没有另一个斜线”。

于 2013-11-06T02:35:49.930 回答
0

您可以尝试使用字符类:

self.regex_string = re.compile("^\w+[\w\-/]*$")

方括号 ( []) 定义字符类,它将匹配其中的任何内容。例如,[A-Cd-fG]将只允许 A、B、C、d、e、f 和 G。

于 2013-11-06T02:29:36.073 回答