如何使用正则表达式将字符串拆分为单词、标点符号和空格?
示例:
- 输入字符串:
"One day you're going to 'solve' this problem"
- 输出列表:
["One", " ","day"," ","you're"," ","going"," ","to"," ","'","solve","'"," ","this","problem"]
我已经看过这个问题的一系列答案,但它们都有一些不足之处:
- 不匹配带有撇号的单词。
you're
- 匹配带有撇号的单词,也可以匹配后面有撇号的单词,例如
'This is a cat'
- 不是一个通用的解决方案(创建一个正则表达式,它可以处理示例字符串中的特定标点符号,但不能处理所有标点符号)。
我试过的例子几乎奏效,但不完全奏效:
RegExp(r"\w+|[^\w\s]+| ").allMatches(string)
RegExp(r"[\w']+|[.,!?; ]").allMatches(string)
string.split(RegExp(r"(?=[.\s]|\b)"))
2条答案
按热度按时间byqmnocz1#
你可以建立在这样的东西上:
https://regex101.com/r/jJbFQd/1
uajslkp62#
你可以试试这样的方法:
它将首先尝试匹配括号中的其中一个,然后尝试匹配以下任何一个:
'
,后跟任何单词字符。可以检查上面的模式是否有效。任何失踪案件,请随时联系。
https://regex101.com/r/iKk5Gc/1