regex - 用于检测未用双引号引起来的字符串的正则表达式

标签 regex

我有一个类似这样的字符串

“快”“棕色”狐狸跳过“”“懒”狗

我需要一个正则表达式来检测未用双引号引起来的单词。经过一些随机尝试后,我发现了这个 ("([^"]+)")。这检测到用双引号括起来的字符串。但我想要相反的。我真的想不出它即使在尝试反转上述正则表达式之后。我在正则表达式方面很弱。请帮助我

最佳答案

使用前瞻/后瞻断言:

(?<![\S"])([^"\s]+)(?![\S"])

示例:

>>> import re
>>> a='"quick" "brown" fox jumps "over" "the" lazy dog'
>>> print re.findall('(?<![\S"])([^"\s]+)(?![\S"])',a)
['fox', 'jumps', 'lazy', 'dog']

这里的主要内容是lookahead/lookbehind断言。您可以说:我希望这个符号位于表达式之前,但我不希望它成为匹配本身的一部分。好的。为此,您使用断言:

(?<![\S"])abc

这是一种消极的回顾。这意味着您需要 abc 但在它之前没有 [\S"] ,这意味着不能有非空格字符(字)或之前的 "

这是相同的,但方向不同:

abc(?![\S"])

这是一个否定的前瞻。这意味着您需要 abc,但后面没有 [\S"]

一般有四种不同类型的网络断言:

(?=pattern)
    is a positive look-ahead assertion
(?!pattern)
    is a negative look-ahead assertion
(?<=pattern)
    is a positive look-behind assertion
(?<!pattern)
    is a negative look-behind assertion 

关于regex - 用于检测未用双引号引起来的字符串的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11324749/

相关文章:

c# - 从 CS 文件中提取信息的正则表达式

php - 括号之间的正则表达式值

regex - 美国银行机构帐号正则表达式?

python - 我想从内容字符串 : "<a href="http://twitter. com/download/iphone"rel ="nofollow">Twitter for iPhone</a>"中提取特定模式

python - Xpath:如果包含特定单词,则获取 href

javascript - 用于替换单个反斜杠的正则表达式,不包括后跟某些字符的反斜杠

regex - 正则表达式中的单词边界是什么?

php - 提取数据 PHP 字符串

java - 用于匹配具有两个大写字母的两个单词的正则表达式

regex - 在 VIM 中是否有允许我交换 2 个单词的正则表达式(或任何其他快捷方式)?