我正在寻找匹配的正则表达式:
ciao: c'iao 'ciao'
Run Code Online (Sandbox Code Playgroud)
和:
ciao #every word excluding non-word character
c'iao #including apostrophes
ciao #excluding the quotes ''
Run Code Online (Sandbox Code Playgroud)
到目前为止,我已经能够将前两个要求与:
/[\w']+/
Run Code Online (Sandbox Code Playgroud)
但我正在努力在单引号之间提取单词(不包括引号)。请注意,我不会遇到在引号之间包含带撇号的单词的情况(例如 'c'iao')
我看过很多类似的问答,但没有找到适合我的;包含简要说明的答案的加分:)
您可以使用以下表达式:
/\w+(?:'\w+)*/
Run Code Online (Sandbox Code Playgroud)
表达式匹配:
\w+ - 1 个或多个字字符(?:'\w+)*- 零个或多个序列(作为(?:...)*一个非捕获组,该组将使用*量化匹配 0 次或多次出现的量词量化的子模式序列进行分组):
' - 撇号\w+ - 1 个或多个字字符。"ciao: c'iao 'ciao'".scan(/\w+(?:'\w+)*/)
# => [ciao, c'iao, ciao]
Run Code Online (Sandbox Code Playgroud)