[英]Why doesn't the following regular expression work in Python?
我有以下代码:
regularexpression = r'([-\w]*\w)? ?: ?([-"\#\w\s_]*\w?);'
outputfr = re.findall(regularexpression, inputdata, re.IGNORECASE)
return data
应该捕获以“;”结尾的单词,连字符和其他字符。 所以:
(hello-nine: hello, six, seven; hello-five: six eight)
将输出为[('hello-nine','hello,六个,七个'),('hello-五个','六个八')
如果final-number: "seventy", "sixty", "fifty", forty
sentiy final-number: "seventy", "sixty", "fifty", forty
是用户输入(输入数据)的一部分,则regularexpression不会捕获它。 我希望它输出为[('final-number', '"seventy", "sixty", "fifty", "forty")]
为什么是这样?
在您的正则表达式中,第二组:
([-"\#\w\s_]*\w?)
需要进行更改,以使其与逗号匹配:
([-"\#\w\s_,]*\w?)
您的示例输入->输出不一致。 在第一种情况下,逗号分隔的项目保持在一起,但是在第二种情况下,它们是单独的列表元素。 另外,您是否要删除括号? 引号? 通过给予实际值澄清inputdata
并显示正是你想要返回(包括剥离引号,括号中)是什么。 永远不会分配data
变量。
使用.split(";")
可能是一个更好的起点...
inputdata = "(hello-nine: hello, six, seven; hello-five: six eight)"
mylist = inputdata.split(";")
# here either use regexp or another split, depending on what you want...
subset = [x.split(":") for x in mylist]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.