正则表达式在匹配字符串时如何忽略转义引号?

2023-12-12

我正在尝试编写一个正则表达式,它将匹配除尚未转义的撇号之外的所有内容。考虑以下:

<?php $s = 'Hi everyone, we\'re ready now.'; ?>

我的目标是编写一个基本上匹配其字符串部分的正则表达式。我正在考虑诸如此类的事情

/.*'([^']).*/

为了匹配一个简单的字符串,但我一直在试图弄清楚如何在该撇号上进行负向后查找,以确保它前面没有反斜杠......

有任何想法吗?

- JMT


这是我的测试用例解决方案:

/.*?'((?:\\\\|\\'|[^'])*+)'/

我的(Perl,但我不使用任何我认为不特定的 Perl 功能)证明:

use strict;
use warnings;

my %tests = ();
$tests{'Case 1'} = <<'EOF';
$var = 'My string';
EOF

$tests{'Case 2'} = <<'EOF';
$var = 'My string has it\'s challenges';
EOF

$tests{'Case 3'} = <<'EOF';
$var = 'My string ends with a backslash\\';
EOF

foreach my $key (sort (keys %tests)) {
    print "$key...\n";
    if ($tests{$key} =~ m/.*?'((?:\\\\|\\'|[^'])*+)'/) {
        print " ... '$1'\n";
    } else {
        print " ... NO MATCH\n";
    }
}

运行此显示:

$ perl a.pl
Case 1...
 ... 'My string'
Case 2...
 ... 'My string has it\'s challenges'
Case 3...
 ... 'My string ends with a backslash\\'

请注意,开始时的初始通配符需要是非贪婪的。然后我使用非回溯匹配来吞噬 \\ 和 \' 以及其他任何不是独立引号字符的内容。

我认为这可能模仿编译器的内置方法,这应该使它非常防弹。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

正则表达式在匹配字符串时如何忽略转义引号? 的相关文章

  • shell中如何分割字符串

    我有一个变量作为 string ABC400p2q4 我怎样才能分开ABC400 and p2q4 我需要将它分成两个变量 结果我得到 echo var1 ABC400 echo var2 p2q4 可以用任何字母字符代替 ABC 可以用任
  • 如何仅删除单括号并保留配对的括号

    你好 我亲爱的老师 R 用户朋友们 我最近开始认真学习正则表达式 最近我遇到了一种情况 我们只想保留配对括号 并省略未配对的 这是我的样本数据 structure list t1 c Book Pg 1 Website Online Jou
  • 使用基于正则表达式的部分匹配来选择 Pandas 数据帧的子数据帧

    我有一个 Pandas 数据框 它有两列 一列 进程参数 列 包含字符串 另一列 值 列 包含相应的浮点值 我需要过滤出部分匹配列 过程参数 中的一组键的子数据帧 并提取与这些键匹配的数据帧的两列 df pd DataFrame Proce
  • 正则表达式:删除 xml 的空元素标签

    我想将所有自封闭元素替换为长语法 因为我的网络浏览器在它们上绊倒 Example becomes 我正在使用 python 风格的正则表达式 这些解决方案都不会容纳像 foo gt 这样的属性 尝试 s lt w gt s gt lt 1
  • 如何为俚语和表情符号构建正则表达式 (regex)

    我需要构建一个正则表达式来匹配俚语 即 lol lmao imo 等 和表情符号 即 P 等 我按照以下示例进行操作http www coderanch com t 497238 java java Regular Expression D
  • Javascript Replace() 和 $1 问题

    我正在尝试创建一个脚本来搜索文本中的模式并在它找到的字符串周围包裹一个标签 shop attributes td each function this html function i html return html replace E 0
  • 使用通配符分割字符串

    我有一个变量字符串 其中包含我需要的值和拆分器 问题是 字符串的长度是可变的 分割器的类型也是可变的 它们通过 XML 文件到达 字符串将如下所示 1 20 51 2 name jpg 但也可以是 1 20 51 name jpg 坚实的因
  • Pandas系列矢量化文本处理

    我想使用矢量化操作改进我的 Pandas 代码 假设我有一个简单的 DataFrame 其中有一个文本列 其中可能包含 url Column1 0 hello http www google com 1 bye www mail com w
  • Python 正则表达式中的 \B+ 与 [\B]+ 与 [^\b]+

    我在回答 SO 问题时遇到了一个我不明白的问题 我创建了一个简化的示例来说明该问题 场景 我正在测试两个标记 不是随机的英语单词 在字符串中至少相距一定距离 在这个例子中 我们有一个动物列表 我们要确保在羊和狼之间至少还有其他三种动物 否则
  • 文件系统文件名转义? C#

    我允许用户选择他想要的任何用户名 它可以是任何用户名 例如 AC Man 现在我需要为他创建一个目录 我使用什么函数来转义文本 这样我就不会出现 FS 问题 异常 无论您替换无效字符还是删除它们 总是存在发生冲突的可能性 如果我是你 我会为
  • 如何在 iPhone 应用程序中使用正则表达式以 , (逗号)分隔字符串

    我必须读取包含三列的 csv 文件 在解析 csv 文件时 我得到了这种格式的字符串克里斯托弗 巴斯 为心爱的国家哭泣 期末论文 电子邮件受保护 cdn cgi l email protection 我想将三列的值存储在一个数组中 所以我使
  • 请解释*贪婪量词的工作原理

    Pattern ptn Pattern compile a Matcher mtch ptn matcher bbaac if mtch find System out println mtch group 输出 不打印任何内容 Patte
  • 正则表达式中的“g”标志是什么意思?

    的含义是什么g正则表达式中的标志 之间有什么区别 g and g用于全局搜索 这意味着它将匹配所有出现的情况 通常你还会看到i这意味着忽略大小写 参考 全局 JavaScript MDN https developer mozilla or
  • 正则表达式:匹配未包含在 [] 中的空格

    例如 对于这个字符串 div img wrapper img title Hello world 我想匹配第一个空格 但不匹配第二个空格 包含在 中 正则表达式是什么 以下表达式将通过使用前瞻断言来完成这项工作 gt 下划线代表空格 该表达
  • Laravel 验证规则仅针对字母

    我正在尝试添加验证规则以仅接受信件 我正在使用regex规则 但它仍然不起作用 下面是我的代码 Validate request input this gt validate request name gt required regex p
  • 重定向而不改变url

    我总是不喜欢 htaccess 我正在尝试建立一个所有请求都通过index php 的网站 但我希望URL 类似于www sample com home 该网址实际上会加载 www sample com index php page hom
  • 正则表达式,提取不在两个括号之间的字符串

    好的正则表达式问题 如何提取不在两个字符之间的字符 在本例中是括号 我有一个字符串 例如 字1 字2 字3 字 4 我只想获取第一个和最后一个 管道 而不是括号之间的第二个 管道 我已经尝试了无数次负克拉和负分组的尝试 但似乎无法使其发挥作
  • preg_match_all 查询仅显示有问题的外部组

    我无法弄清楚如何只显示 preg 查询的外部组级别 我会给你一个例子 preg match all start end input matches 这个输入start1 start2 2end 1end产生这个输出start1 start2
  • 正则表达式匹配bash变量

    我正在尝试修改 bash 脚本 当前脚本包含 print div class 1 div Where 1可能看起来像 Apprentice Historian Level 1 Historian Level 4 Master Histori
  • 使用正则表达式提取两个短语之间的所有单词[重复]

    这个问题在这里已经有答案了 我正在尝试使用以下正则表达式提取两个短语之间的所有单词 b item W w W 0 2 1 one W w W 0 3 business b b item W w W 0 2 3 three W w W 0 3

随机推荐

  • MATLAB 四舍五入到最接近的整数

    我有一个1x50000尺寸矩阵v我想将其转换为零均值和单位方差 x v mean v std2 v 但 MATLAB 没有给我精确的浮点值 而是将其转换为最接近的整数 请帮助我获得准确的值 检查数据类型 for v 我确信这是一个整数类型
  • 在 python 中获取 windows 版本的更好方法是什么?

    我将编写一个执行 Windows 操作系统版本检查的程序 因为我可以使用 sys windowsversion 0 或返回字符串而不是 int 的平台模块来执行此操作 那么获取 Windows 发行版本的更好方法是什么 您可以通过致电来做到
  • 以编程方式将文本大小设置为 android 中微调器中的文本

    您好 我想以编程方式 动态 设置微调器中文本的样式和大小 我在我的应用程序中没有为此使用任何资源 所以请给我一些建议 我认为您不能在不覆盖默认布局资源的行为的情况下动态创建它 要使用资源创建它 创建一个布局文件 其中包含TextView并为
  • React Native:任务:react-native-maps:compileDebugRenderscript失败

    我正在尝试实现 React NativeMapView对于安卓 我确实关注了github安装指令 但当我尝试使用运行时遇到编译错误react native run android命令 任务 react native maps compile
  • 在 emacs 终端中使用 Ctrl-X 命令?

    当我在 emacs 中运行终端时 使用M x term 我似乎无法使用以C X 比如说C x o切换窗格或C x C c退出 相反 终端本身似乎正在接收这些C x信号 相比之下 C c命令由 emacs 本身接收 我怎样才能改变这种行为 t
  • 火狐浏览器扩展无法工作

    我已经创建了一个 Firefox 扩展 但无法使用它 什么也没有发生 有人知道为什么吗 模块层次结构 我的火狐扩展 chrome manifest 安装 rdf chrome content 语言环境 html 覆盖 js 样本 xul 代
  • 使用 Rails 中的辅助方法向 HAML 标记添加动态属性

    所以我想出了一种方法来做到这一点 但是有没有更简单的方法呢 我想要做的只是在 th 标记之后添加 class 如果 params sort sortBy 我真的需要在辅助方法中包含 HAML 的其余部分吗 这是我的 helper rb 文件
  • Twisted Python:无法写入正在运行的生成进程

    我的问题是 在生成进程后 子进程正在循环以从其标准输入获取数据 我想使用 Echo Process pipes 0 write data 或 Echo Process writeToChild 0 data 向其写入新数据 但两者都不起作用
  • 无法使用 virtualenv 运行 Apache2

    我正在制作一个基于 Django 的网站 在服务器上安装了 Python 3 5 但我的项目需要 Python 3 6 我决定使用 virtualenv 我成功安装了所需版本的 Python 但无法使其与 Apatche2 一起使用virt
  • ruby 1.9 和rails 的soap 客户端

    到目前为止 我使用soap4r 作为 Ruby 1 8 x 的 SOAP 客户端 但现在我正在转向 Ruby 1 9 x 不幸的是 soap4r 不能与 Ruby 1 9 x 一起工作 我只是得到了 无效的多字节转义 这似乎无法解决 主要是
  • 如何连接派生表?

    sql语句是这样的 select posts id posts title from posts inner join select distinct post id created at from comments order by cr
  • 是否可以即时更改 PrimeFaces 主题?

    我有一个多租户系统 用户签名后将在应用程序中拥有自定义主题 我想知道是否可以在用户签名后 动态 更改主题 我是 Primefaces 的新手 感谢您的帮助 Primefaces 已经实现了 jQuery UI主题滚轮 在你的 web xml
  • 从分叉创建新的拉取请求,而无需提交前一个分叉

    因此 我对其他人的存储库进行了一些提交 然后提交了相同的拉取请求 我的旧拉取请求尚未合并 现在我需要提交一个新的拉取请求 而不需要以前的提交 但要对我的分叉进行新的更改 我需要我的旧拉取请求及其提交也留下来 我怎样才能做到这一点 要真正理解
  • Nginx 自动将 HTTP 重定向到 HTTPS

    我正在尝试重定向我的所有流量http to https自动地 如何对我的所有域和子域进行 301 重定向 这是 NGINX 配置文件 upstream app server server unix run DigitalOceanOneCl
  • 为什么 SQL Server 将 SS 视为 Umlaut-S (ß)?

    当我运行以下查询时 select charindex COMMISSIONING 它返回 6 我专门选择 作为函数 因为我认为它不太可能出现在我的任何数据中 这几周工作得很好 但现在突然它在没有 的地方检测到 因此搞砸了我的功能 有人可以告
  • 重命名列后出现 keyerror

    I have df df pd DataFrame a 7 8 9 b 1 3 5 c 5 3 6 print df a b c 0 7 1 5 1 8 3 3 2 9 5 6 然后将第一个值重命名为this df columns valu
  • “git push appengine master”中需要用户名和密码

    这是我第一次使用 Google App Engine 我正在尝试上传 PHP 网站 我正在尝试使用 git 上传它 我遵循了他们的教程 最后他们说要输入这段代码 所以我就这么做了 我尝试在 git bash 中输入这段代码 这是代码 git
  • MVC 的 PHP 简单数据库连接类

    我已经为简单的 MVC 模式构建了新的数据库连接类 我需要知道这是执行此操作的正确方法
  • 存储过程中返回的地理列未显示在实体框架自动生成的复杂类型中

    我正在使用 Entity Framework 6 和 Net 4 5 我有一个选择并返回数据的存储过程 返回列之一是地理类型 在 Visual Studio 2013 中 我右键单击 edmx 文件 单击 从数据库更新模型 此操作获取我的存
  • 正则表达式在匹配字符串时如何忽略转义引号?

    我正在尝试编写一个正则表达式 它将匹配除尚未转义的撇号之外的所有内容 考虑以下 我的目标是编写一个基本上匹配其字符串部分的正则表达式 我正在考虑诸如此类的事情 为了匹配一个简单的字符串 但我一直在试图弄清楚如何在该撇号上进行负向后查找 以确