首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >用于匹配双引号引用的单引号的Regex

用于匹配双引号引用的单引号的Regex
EN

Stack Overflow用户
提问于 2016-03-23 08:35:05
回答 2查看 1.9K关注 0票数 3

这里有一个Regex,我一直在努力让它发挥作用:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
(?:"[^"]*"[^"]*)*?\"{1}([^"]*?([']{1,})[^"]*?)\"

这可能不是实现我想要做的事情的最干净和最有效的方法,但我想我已经快到了。

我的目标是在双引号(")之间匹配任何被引用的单引号(') ,所以在它前面需要有一个奇怪的双引号。我知道现在它只匹配第一组单引号,这很好。我最终会使用这个正则表达式来替换第一个出现的值,然后迭代并再次使用它来替换其他的单引号,只要有一些。

以下是几个例子:

  • 这是一个随机的句子'有一个引语,这个引号应该与匹配
  • “这里没有引语,这就是问题所在”,这里的任何东西都不应该与相匹配,但现在它已经匹配了:'。
  • “一些文本”更多的文本“这个是一句名言:‘那应该匹配’
  • “当这里有一句话('),另一个不起作用:‘’和‘这是完美的’,即使你删除第一个:”(')“会使它工作,因为贪婪(我认为),但如果你删除括号之间的那些,另一个是匹配的,从现在起,我不想发生。”
  • 另一个例子是:以下内容不应该有效,但它确实“这是被引用的”而不是这个:(')“而且这个也是被引用的”

请注意,我真的不认为自己是一个专家,几天前我几乎什么都不知道,除了经典的a-za-z0-9.任何帮助都是受欢迎的,我可能忽略了一些基本的东西。

我一直在这里工作:https://regex101.com/r/aE7iB8/1

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-03-23 11:20:30

好吧,这是一个对所有样本都有效的正则表达式--但是它有点长,而且并不是完全可读的。我希望java模式的所有转义都是正确的。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
(?:(?:^|\\G(?<!^)[^'\"]*\")[^\"]*+(?:"[^\"']*"[^\"]*)*+"|\\G(?<!^))[^'\"]*+(')

这利用了\G-matcher (将在最后一个模式的末尾匹配)和后置修饰符,以避免不必要的回溯。

让我们从结尾开始,[^'\"]*+(')匹配任何字符,不是单引号或双引号,后面是单引号,它被捕获到组中。

\\G(?<!^)匹配在最后一次匹配的末尾( (?<!^)用于确保我们不在字符串的开头,因为这是\G在第一次运行中的位置,在任何匹配之前)。因此,我们将尝试,如果有另一个单引号在双引号中,我们在上一场比赛。

(?:^|\\G(?<!^)[^'\"]*\")[^\"]*+(?:"[^\"']*"[^\"]*)*+"用于跳过所有不在双引号或不包含单引号的序列。如果没有其他单引号,^|\\G(?<!^)[^'\"]*\"将匹配字符串的开始(第一次匹配)或匹配,直到最后一次匹配的结束双引号为止。然后,[^\"]*+匹配任何不是双引号的内容。然后,(?:"[^\"']*"[^\"]*)*+"匹配不包含单引号和单引号之外的序列的任何双引号,直到我们到达开始匹配单引号的双引号为止。

但是我想一个演示展示的效果比我能解释的要好得多,所以下面是:https://regex101.com/r/tW5xH4/1

票数 2
EN

Stack Overflow用户

发布于 2016-03-23 10:28:12

如果您计划以任何方式迭代,我会考虑先迭代以获取双引号中的所有内容,然后使用以下正则表达式:

"(.*?)“

这做了一个非贪婪(首先)匹配之间的引号之间的一切。

(请参阅其他在引号之间获取内容的方法:RegEx: Grabbing values between quotation marks)

一旦在双引号对中包含了所有字符串,那么匹配这些字符串中的任何单引号将是非常简单的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36183788

复制
相关文章
Golang的单引号、双引号与反引号
而单引号则用于表示Golang的一个特殊类型:rune,类似其他语言的byte但又不完全一样,是指:码点字面量(Unicode code point),不做任何转义的原始内容。
py3study
2020/01/02
3.9K0
MySQL中的单引号和双引号
《请注意前方高能有引号!》提到过Oracle中引号的处理,其实不仅是Oracle,其他的数据库中,同样存在引号是否使用正确的问题,看到社区的这篇文章,就介绍了MySQL中对单引号和双引号的几种使用场景,可以借鉴学习。
bisal
2023/01/08
4.6K0
MySQL中的单引号和双引号
单引号双引号与poc的故事
最近编写个Thinkcmf任意件内容包含漏洞插件,因为之前写过这个漏洞的poc觉着会很简单,此次的只要增强下功能,能上传定义的就拿出曾经写的poc开始改造之旅,先找个境,曾经发好多境外ip的直播站的都是这个框架,所以本地也不搭建了,fofa上直接搜索直播,可以看到很多标,随便寻找个
Ms08067安全实验室
2020/06/04
2K0
Shell双引号和单引号的区别
Shell在使用的过程中,经常会使双引号或者单引号将字符串括起来,也可以不使用引号来定义字符串变量。示例如下:
恋喵大鲤鱼
2019/03/05
3.1K0
SQL 语句单引号、双引号的用法
关于Insert字符串 ,在(单引号,双引号)这个方面发生了问题,其实主要是因为数据类型和变量在作怪。下面我们就分别讲述,虽然说的是Insert语句, 但是Select、Update、Delete语句都是一样的。
民工哥
2020/09/15
2.8K0
SQL 语句单引号、双引号的用法
Python中单引号,双引号,3个单引号
我们知道Python以其易用性而著名,所以刚开始看教程学习看到单引号和双引号都可以使用会以为这是Python为了方便程序员,随便用哪个就好,不用担心用错。其实,背后的原因不只是这么简单。举个例子,想想I'm a big fans of Python.这个字符串应该怎么定义。
py3study
2020/01/13
3.8K0
SQL 语句中单引号、双引号的用法
假如要插入一个名为张红的人,因为是字符串,所以Insert语句中名字两边要加单撇号,数值型可以不加单引号
朱小五
2021/10/18
4.5K0
Golang的单引号、双引号与反引号
而单引号则用于表示Golang的一个特殊类型:rune,类似其他语言的byte但又不完全一样,是指:码点字面量(Unicode code point),不做任何转义的原始内容。
sunsky
2020/08/19
3K0
LaTeX 如何使用双引号,单引号[通俗易懂]
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/153093.html原文链接:https://javaforall.cn
全栈程序员站长
2022/09/12
6.3K0
LaTeX 如何使用双引号,单引号[通俗易懂]
Shell双引号,单引号和无引号的区别
无引号 不使用引号定义字符串时,字符串不能包含空白字符(如Space或Tab),需要该加引号,一般连续的字符串,数字,路径等可以不加引号。如果内容中有命令、变量等,会先把变量、命令解析出结果,然后在输出最终内容。 > RUMENZ1="入门 小站" > RUMENZ2=入门小站 > RUMENZ3=入门 小站 #直接报错 可见,字符串中包含有空格时必须用引号括起来,将无法正常输出。 必须使用双引号("")和单引号('')的场景 在变量赋值时,如果有空格,Shell会把空格后面的字符串解释为命令 > RUME
入门笔记
2021/01/01
5.8K0
php中的双引号与单引号的基本使用
PHP字符串变量用于存储并处理文本, 在创建字符串之后,我们就可以对它进行操作。我们可以直接在函数中使用字符串,或者把它存储在变量中
itclanCoder
2023/09/14
5810
php中的双引号与单引号的基本使用
【说站】php双引号和单引号的区别
字母、下划线的特殊字符,或者用{}把变量括起来,否则变量名后面的部分会作为一个整体,造成语法错误。
很酷的站长
2022/11/24
2.8K0
【说站】php双引号和单引号的区别
JS 单引号、双引号与反引号的区别
每一个编程语言都有引号,但作用和用法略有区别。JS 也存在单引号、双引号与反引号。
恋喵大鲤鱼
2021/01/21
9.2K0
Bash Shell 中单引号和双引号的区别
你会经常在 Linux 命令行中使用引号,处理文件名中的空格?你使用引号。处理特殊字符?你再次使用引号。
网络技术联盟站
2022/04/12
3.7K0
Bash Shell 中单引号和双引号的区别
说说Python 单引号、双引号、三引号的区别?
小猿会从最基础的面试题开始,每天一题。如果参考答案不够好,或者有错误的话,麻烦大家可以在留言区给出自己的意见和讨论,大家是要一起学习的 。
程序员小猿
2021/01/19
4.2K0
Golang 单引号、双引号和反引号
Golang限定字符或者字符串一共三种引号,单引号(’’),双引号("") 以及反引号(``)。反引号就是标准键盘“Esc”按钮下面的那个键。
twowinter
2020/04/16
15.4K0
Golang 单引号、双引号与反引号
单引号在 Golang 表示一个字符,使用一个特殊类型 rune 表示字符型。rune 为 int32 的别名,它完全等价于 int32,习惯上用它来区别字符值和整数值。rune 表示的是字符的 Unicode 码值。
恋喵大鲤鱼
2020/04/17
4.2K0
latex中双引号和单引号的正确应用[通俗易懂]
演示代码: \documentclass{article} \setlength \textwidth{150pt} \begin{document} \large Pumas are “large, cat-like animals’’ which are `found in America’. When reports came into London Zoo that a wild puma had been spotted forty-five miles south of London, they were not taken seriously. However, as the evidence began to accumulate, experts from the Zoo felt obliged to investigate, for the descriptions given by people who claimed to have seen the puma were extraordinarily similar. \end{document}
全栈程序员站长
2022/09/12
1.8K0
latex中双引号和单引号的正确应用[通俗易懂]
LinuxShell单引号、双引号、反引号以及无引号的区别
单引号为强引用,即将单引号中的内容原样输出,而不会对任何变量函数进行解析。比如在 Shell 中输入以下代码:
hotarugali
2022/02/28
5.6K0
点击加载更多

相似问题

regex匹配单引号或双引号的文本

410

javascript regex用于匹配单引号、双引号和regex斜杠之间的任何内容

22

Regex在双引号中匹配单引号(单独)?

34

用于匹配字符串中单引号或双引号之间的单词的Regex

22

RegEx匹配被空格转义双引号/单引号分割?

12
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文