正则表达式中的 Perl 正则表达式

2024-04-06

我想问是否可以在带有“e”修饰符的替换匹配表达式的 RHS 中放置另一个正则表达式。

例如,我想将 $foo 中存储的任何单词替换为相同数量的“-”, 不区分大小写。

例如:

$str =~ s/($foo)/$temp = $1; $temp ~= s/./-//gie;

但是编译的时候总是报语法错误,

$str =~ s/($foo)/$temp = $1; $temp = "---"/gie; 

确实有效。

我想我没有正确逃脱斜杠,有什么想法吗?


你当然需要e能够使用的修饰符

$str = 'banana';
$foo = 'na';
$str =~ s/$foo/$&=~s#.#-#gr/ge;
print $str;

See the 在线 Perl 演示 http://ideone.com/lyIEPk

请注意,外部正则表达式使用/正则表达式分隔符,而内部分隔符包含不同的分隔符(您可以在此处使用您最喜欢的两个)。

The e修饰符对于外部模式是强制性的,并且您还需要通过r修饰内部的一个以避免修改只读值 issue.

另请注意,在 Perl v.5.20 之前,您最好避免$&并将整个图案括起来(...)捕获组:

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

正则表达式中的 Perl 正则表达式 的相关文章

  • 如何使用 PHP preg_replace 链接 Twitter 用户名?

    我想搜索我的 Twitter 状态对象的文本属性并将 username 替换为 a href username a 到目前为止我尝试过的看起来像这样 pattern 1 a zA Z0 9 replace a href 1 2 a new
  • 设计 DFA 接受可被数字“n”整除的二进制字符串

    我需要学习如何设计一个 DFA 使得给定任何数字 n 它接受二进制字符串 0 1 其十进制等效数可被 n 整除 不同的 n 会有不同的 DFA 但是有人可以给出一个基本方法 我应该遵循该方法来处理任何数字 0 下面我写了一个答案n等于 5
  • 年函数不支持 dt_wstr

    我无法使用下面的代码应用转换 出现错误 年函数不支持 dt wstr 我使用的表达式是 DT I4 DT WSTR 4 YEAR fisc wk end dt RIGHT 0 DT WSTR 2 MONTH fisc wk end dt 2
  • XRegExp 没有后视功能?

    我需要在JavaScript中使用正则表达式的lookbehind 所以发现在 JavaScript 中模拟lookbehind 第 2 步 https gist github com slevithan 2387872 另外 我发现作者
  • JavaScript 和正则表达式:文字语法与正则表达式正则表达式对象

    我在这段小 JavaScript 代码中遇到了一些麻烦 var text Z Test Yeah Z With literal syntax it returns true good alert Z s S Z g test text Bu
  • 如何连接行并添加分隔符?

    命令J连接线 命令gJ连接线删除空格 是否还有连接行的命令 在行之间添加分隔符 Example Input text other text more text text 我想做的事 选择这4行 如果开始和 或 EOL 处有空格 请将其删除
  • “通用”电话号码的基本正则表达式

    我需要一个正则表达式 用于 ASP NET 网站 来验证电话号码 它应该是灵活的 唯一的限制是 应至少为 9 位数字 没有字母 可以包含空格 连字符 单个 我搜索过 SO 和 Regexlib com 但我得到的表达式有更多限制 例如英国电
  • 如何从 Python 列表中删除日期

    我有一个标记化文本列表 list of words 看起来像这样 list of words 08 20 2014 10 04 27 pm complet vendor per mfg recommend 08 20 2014 10 04
  • Java:正则表达式,其中每个字符出现0-1次

    Problem 匹配正则表达式的每个字符最多出现一次的单词 该单词必须具有一定的大小 例如 2 5 单词中必须有一个特定的字符 比方说字符 e 我有什么 word matches abcde 2 5 这将匹配字符 a b c d 和 e 出
  • 使用正则表达式抓取文本正文,排除特定条件

    我正在使用 Python 正则表达式来获取已解析电子邮件的正文 该正文可能不包含任何内容 也可能看起来像这样 一些连贯的句子 拉尔斯克法 ljkd 其他的东西 几行电子邮件签名等等 等等等等等等 我想要电子邮件正文中的所有内容 不包括签名行
  • 从字符串中提取数字 (Regex C++)

    假设我有一根绳子S 1 this is a number 200 Val 54 4class find57 我想用Regex仅提取这些数字 num 1 1 num 2 200 num 3 54 而不是 4class 中的 4 或 find5
  • 如何比较两个文件中的多列并在找​​到匹配时从另一列检索相应的值

    我有两个文件 File1 txt 和 File2 txt 我需要将 File1 中的三列 1 2 和 3 分别与 File2 的 4 5 和 6 进行比较 如果找到匹配项 我想从 File2 的第 2 列中检索相应的值并将其粘贴到输出中 T
  • 迭代哈希数组

    我编写了下面的例程 迭代哈希值 0 7 并打印出每个哈希值中特定键的值 我需要获取每个哈希中 b4 的值 我想取消 0 7 当存在不同数量的哈希值时使用更智能的东西 例如 有时只有 2 个 也可能有 160 个 my out decode
  • 正则表达式接受 4 条规则中的 3 条

    我似乎无法让正则表达式正确满足以下要求 长度在 8 到 20 之间的字符串 必须包含至少 1 个大写字母字符 至少 1 个小写字母字符 以及至少 1 个数字或至少 1 个特殊字符字符 或两者 假设特殊字符仅限于包括 我最初是这样写的 A Z
  • 在压缩存档内的文本文件上运行“head”,而不解压存档

    问候 我接手了之前的团队并编写了处理 csv 文件的 ETL 作业 我在 ubuntu 上结合使用 shell 脚本和 perl csv 文件很大 它们以压缩档案形式到达 解压后 很多都超过 30Gb 是的 那是 G 旧进程是在 cron
  • 我可以缩短这个正则表达式吗?

    我需要检查字符串是否符合特定的 ID 格式 ID的格式如下 aBcDe fghIj KLmno pQRsT uVWxy 由五个大写或小写字母组成的五个块的序列 由一个破折号分隔 我有以下有效的正则表达式 string idFormat a
  • 在Python中检测re(regexp)对象

    我想知道什么是正确的 pythonic 向后和向前兼容的方法如何检查对象是否已编译re object isinstance方法不能轻易使用 而生成的对象声称是 sre SRE Pattern object gt gt gt import r
  • Java中字符串中特殊字符的替换

    Java中如何替换字符串 E g String a adf sdf 如何替换和避免特殊字符 您可以删除除此之外的所有字符可打印的 ASCII 范围 http en wikipedia org wiki ASCII ASCII printab
  • 正则表达式拆分数字和字母组,不带空格

    如果我有一个像 11E12C108N 这样的字符串 它是字母组和数字组的串联 如何在中间没有分隔符空格字符的情况下分割它们 例如 我希望分割结果为 tokens 0 11 tokens 1 E tokens 2 12 tokens 3 C
  • 如何使用 XPath 正则表达式匹配 URL

    需要 XPath 方面的帮助 我有这样一个XML

随机推荐