我在找一个匹配的正则表达式:

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/

10-13 04:52