我在找一个匹配的正则表达式:
ciao: c'iao 'ciao'
用:
ciao #every word excluding non-word character
c'iao #including apostrophes
ciao #excluding the quotes ''
到目前为止,我已经能够满足前两个要求:
/[\w']+/
但是我在单引号(不包括引号)之间提取单词。请注意,我不会有这样的情况,即引号之间包含带撇号的单词(如'c'iao')
我看过很多类似的问答,但找不到任何适合我的需求;回答时要多加几点,包括简短的解释:)
最佳答案
可以使用以下表达式:
/\w+(?:'\w+)*/
参见Rubular demo
表达式匹配:
\w+
-1个或多个字字符(?:'\w+)*
-零个或多个序列(因为(?:...)*
是一个非捕获组,它将量化的子模式序列与0个或多个匹配的量词分组):*
-撇号'
-1个或多个字字符。见Ashort Ruby demo here
"ciao: c'iao 'ciao'".scan(/\w+(?:'\w+)*/)
# => [ciao, c'iao, ciao]
关于ruby - ruby 正则表达式提取单引号之间的单词,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39055670/