2015-07-11 19 views
5

我正在使用Python,现在我想要一些东西来匹配,直到一个空格或字符串的结尾,所以我有正则表达式".*?[ $]"有什么方法可以在正则表达式集中使用特殊字符吗?

但是测试的是,看它不工作我看着documentation,发现特殊字符失去里面套了特殊的意义了。

有没有把这个意思放回集的方法吗?

+1

Nope -'''特殊字符在集合内失去其特殊含义。 '''。回到绘图板。 – wwii

+0

如果有一个字符串与一个字符 - 空格?如果一个字符串是空的呢? – sln

+0

@wwii谢谢,这正是我想知道的。 (虽然答案确实帮助我解决了我的问题。) –

回答

0

没有,特别意思不能被放回到集合中,所以正则表达式必须被重写。

我结束了使用以下正则表达式:.*?(?:\s|$)这是不同的答案的组合。

1

那是因为你正则表达式是不正确,你的正则表达式匹配.*? +空格或字符$字面上。(请注意,除了]每一个正则表达式字符的字符类中会被转义)

相反,你可以提前使用正面看:

.*(?= |$) 

观看演示https://regex101.com/r/sF3qU1/1

1

您可以使用以下方法:

a = "testing for fun" 

    n = match('[^\s]+',a) 

>> testing 
+1

谢谢!这有帮助! –

2

我认为,你的目的的话锚就足够了。从re内部文件(运行pydoc re如果您使用的是类Unix系统):

\b  Matches the empty string, but only at the start or end of a word. 

所以,你的正则表达式将是这样的:

".*?\\b" 

r".*?\b"