python - 正则表达式忽略引号中的模式(Python 或 R)

标签 python r regex

我正在尝试创建一个正则表达式,它允许我找到一个字符串的实例,其中我有一个没有空格的 / 例如:

some characters/morecharacters

我想出了下面的表达式,它允许我在我的 / 之前找到单词字符或右括号,然后找到单词字符或左括号字符。

(\w|\))/(\(|\w)

这在大多数情况下都适用,但是当我将 / 括在引号中时,我会感到困惑。在这种情况下,我希望它被忽略。我看过几个不同的帖子 herehere .但是,我不能完全让它们在我的情况下工作。

我想要的是下面确定的前三个案例匹配,最后一个转换被忽略,允许我提取第 1 项和第 3 项。

some text/more text
(formula)/dividethis
divideme/(byme)
"dont match/me"

最佳答案

它并不漂亮,但它会做你想做的事:

(?<!")(?:\(|\b)[^"\n]+\/[^"\n]+(?:\)|\b)(?!")

Demo on Regex101

让我们分解一下:

  • (?<!")(?:\(|\b)将匹配左括号或单词边界,只要它前面没有引号。它通过使用 negative lookbehind 来做到这一点.
  • [^"\n]+将匹配一个或多个字符,只要它们既不是引号也不是换行符 ( \n )。
  • \/将匹配文字斜杠字符。
  • 最后,(?:\)|\b)(?!")只要后面没有引号,就会匹配右括号或单词边界。它通过使用 negative lookahead 来做到这一点.请注意 (?:\)|\b)只会按此顺序 100% 正确地工作 - 如果您颠倒它们,它会将匹配项放在括号中,因为它在到达括号之前遇到了单词边界。

关于python - 正则表达式忽略引号中的模式(Python 或 R),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40581525/

相关文章:

python - 如果在 Python 中我将一个列表放在一个元组中,我可以安全地更改该列表的内容吗?

r - ggplot2:使用每个第 N 个图例键标签

r - 获取最频繁的条目

正则表达式仅匹配货币数字

python - QTimeEdit 当分钟减少时如何减少到前一小时?

python - 如何使 tqdm 进度条在日志文件中的打印频率降低?

r - R : how to scrape tables after specific Title 中的 Tabulizer 包

regex - 如何在从 Postgresql 中的字符串中删除停用词后删除引号和数字

android - 如何同时在 textView 和自定义 URLSpan 中使用 autoLink?

python - 转置 Pandas 数据框的一部分