Regex 获取与单词之一匹配的引号之间的所有文本
在上面的字符串中,预期输出为“由于与我或其指定的恢复教练没有联系,客户被解雇” 这包含被驳回的单词 类似地,正则表达式应该选取包含字符串中的disposed/discharged/amendable之一的字符串Regex 获取与单词之一匹配的引号之间的所有文本,regex,ruby,string,Regex,Ruby,String,在上面的字符串中,预期输出为“由于与我或其指定的恢复教练没有联系,客户被解雇” 这包含被驳回的单词 类似地,正则表达式应该选取包含字符串中的disposed/discharged/amendable之一的字符串 我已经在尝试过了,您可以用下面的正则表达式匹配所需的文本 a:5:{s:12:"SubmissionID";s:0:"";s:13:"NotesClientID";s:4:"1891";s:5:"F
我已经在尝试过了,您可以用下面的正则表达式匹配所需的文本
a:5:{s:12:"SubmissionID";s:0:"";s:13:"NotesClientID";s:4:"1891";s:5:"Field";a:5:
{i:0;s:7:"8/19/19";i:1;s:0:"";i:4;s:0:"";i:5;s:160:"client is dismissed due to no contact with me or with his assigned Recovery
Coach";i:7;s:0:"";}s:10:"SecurityID";s:40:"a31b7ea7f9191465525d0ac9a6358ba7b3d3e0fc";s:13:"action_doSave";s:4:"Save";}
关于正则表达式的每个元素的详细信息见1
如果变量str
包含问题中作为示例给出的文本,可以这样写:
/.*?"(?=(?:[^"]*\bdismissed\b[^"]*"))\K[^"]*(?=")/m
[String#scan]返回一个数组,其中包含正则表达式的每个匹配项。这里有一根火柴
Ruby的正则表达式引擎执行以下操作
str.scan(/.*?"(?=(?:[^"]*\bdismissed\b[^"]*"))\K[^"]*(?=")/m)
#=> ["client is dismissed due to no contact with me or with his assigned Recovery\nCoach"]
增编:我没有提到问题中的目标词可以是“被解雇”、“被释放”或“可服从”。与其我修改我的答案,不如说在哪里
/
.*? : match 0+ characters, lazily
" : match a double-quote
(?= : begin a positive lookahead to assert that
'dismissed' appears before the next double-quote
(?: : begin a non-capture group
[^"]* : match 0+ characters other than double-quotes
\bdismissed\b : match 'dismissed'
[^"]* : match 0+ characters other than double-quotes
" : match a double-quote
) : end non-capture group
) : end positive lookahead
\K : forget all matched so far and reset match
[^"]* : match 0+ characters other than double-quotes
(?=") : assert the next character is a double-quote
/m : multiline mode to match line terminators
出现在应替换为的正则表达式中
\bdismissed\b
一,。移动光标查看详细说明。如果没有必要,请不要链接到屏幕截图。将您想要讨论的正则表达式作为文本发布。另外,我不明白您的问题是如何定义您感兴趣的子字符串的开头的,因为您的字符串中有几个带引号的子字符串。@user1934428,据我所知,OP希望提取一个由双引号括起来的字符串,该字符串包含三个指定单词中的任意一个,并且没有双引号。阿卡什,对吗?无论何时你给出一个例子,你都应该展示你想要的结果。我建议您编辑以澄清。@AkashK:如果有多个字符串与该标准匹配,还应澄清效果。是否要获取所有匹配字符串的数组?我认为您需要添加其他可能的
已解除/已解除/可修改的关键字。我是这样想的:@MDR,谢谢你的提醒。我快速浏览了一下您提供的链接,您使用了一个捕获组。这似乎很管用,尽管我有一种不合理的偏好,只要有可能,就只进行匹配。一个小细节:你不需要逃避一个双引号(或单引号)。
\b(?:dismissed|discharged|amenable)\b