ios - 正则表达式获取给定单词集之前和之后的所有子字符串

标签 ios regex string

我正在尝试学习正则表达式,并且我有一些场景我认为我可以使用它。我有一组以下格式的字符串(如表中所示),我需要从中提取连接运算符周围的每个子字符串 "and", < em>“或”“不”。例如:- "some column name1 = some value1" 作为第一个字符串中的一个这样的子字符串。

之后,我需要提取运算符 "like""=""<"“>”。在上面的示例中,它会将 "some column name1" 作为一个子字符串,将 "some value1" 作为另一个子字符串,并将运算符作为 "=".

  • some column name1 = some value1 and some column name2 < another value2 or some column name 3 > value3 not column name 4 = value4 and name5 = value5
  • columnA = 324324
  • columnB like a text
  • value text

由于我是 Regex 的新手,这是我迄今为止尝试过的方法,但它似乎并没有为我提供这些运算符的所有值。一旦成功,我想我可以将类似的正则表达式与操作符一起应用,如 "like""=""<"">" 在生成的子字符串上获取最终输出。

(.*?)\b(and|or|not)

当我在第一个示例中尝试上述正则表达式时,这部分 "name5 = value5" 在匹配后丢失了。

(.+?)(and|or|not)(.+)

当我尝试这个时,它匹配第一个子字符串,但其余子字符串作为单个子字符串匹配,而不是再次拆分它们。

请注意,我能够使用拆分操作并将 "and|or|not" 作为分隔符来获取子字符串数组,但是我正在尝试查看是否可以直接获取这些匹配的子字符串从给定的字符串中学习正则表达式(这 answer 说可以使用正则表达式)。我已经针对类似问题探索了 stackoverflow,但没有一种解决方案适用于我的案例。我使用的语言是 Objective C/Swift。

最佳答案

您可以添加字符串结尾 anchor $ 作为分隔符的替代。

(.*?)(?:\b(and|or|not)\b|$)
                        ^^     

参见 regex demo .

如果您的字符串包含换行符,您必须通过在模式开头添加 (?s)(一个 DOTALL 修饰符)来使 . 匹配它们。

关于ios - 正则表达式获取给定单词集之前和之后的所有子字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45252477/

相关文章:

ios - SwiftUI-带有可点击按钮的单元格(在Form内)

Python 根据多个标记拆分句子

regex - 使用正则表达式或漂亮的汤从 Instagram 抓取某人的网站

string - 从字符串中删除前导数字

java - 将 Android 的字符串资源与硬编码字符串连接起来

mysql - 将 mySQL 与字符串中的任何单词匹配

ios - 如何在用户向上滑动 iOS 中的推送通知时执行操作

iphone - Apple 禁止在 NSDocumentDirectory 中创建/修改文件?

ios - Swift NSCache 结构未正确保存

php - Mysql - 查找以字符串开头的短语并删除其后的所有内容