正则表达式太贪婪了

2024-04-12

我正在尝试编写一个正则表达式,但它太贪心了。输入字符串可以采用以下格式之一:

STUFF_12_1234 or STUFF_1234

我想要做的是创建一个正则表达式来抓取最后一个之后的字符_。所以在上面的例子中,这将是数字“1234”。最后一个之后的字符数_各不相同,它们可以是字母和数字的组合。我尝试过以下表达:

_(.*?)\Z

这适用于“STUFF_1234”,返回“1234”,但是当我将它用于“STUFF_12_1234”时,它返回“12_1234”

有人建议如何更改表达式来解决这个问题吗?


至少有 3 种方法可以获取最后一个下划线之后出现的文本_:

  • 保留当前的正则表达式,但指定RightToLeft http://msdn.microsoft.com/en-sg/library/yd1hzczs.aspx RegexOptions。由于正则表达式是从右到左搜索的,因此惰性量词将匹配尽可能少的字符,直到最后一个字符之后_在字符串中。

  • 修改正则表达式以禁止下划线_在您要匹配的文本中:

    _([^_]*)\Z
    
  • 将输入字符串分割为_并选择最后一项。为了这String.Split http://msdn.microsoft.com/en-sg/library/system.string.split.aspx就足够了,不需要Regex.Split http://msdn.microsoft.com/en-sg/library/system.text.regularexpressions.regex.split.aspx.

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

正则表达式太贪婪了 的相关文章

  • 跨线程操作在BackgroundWorker中无效

    我想在数据网格视图中显示有关表单加载的一些数据 我想要显示的数据有大量行 当我使用后台工作处理器时 它向我显示以下错误 My code private void backgroundWorker1 DoWork object sender
  • .NET NewtonSoft JSON反序列化映射到不同的属性名称

    我有以下从外部接收的 JSON 字符串 team v1 attributes eighty min score home or away home score 22 team id 500 v1 attributes eighty min
  • 尝试在 Linux 上使用 Clang++ 编译 c++11 正则表达式教程时出错

    我正在努力追随本教程 http solarianprogrammer com 2011 10 12 cpp 11 regex tutorial 关于 C 11 中的正则表达式 当我尝试编译这个小代码示例时 我收到这些错误 clang std
  • 仅在大括号外的空格上分割字符串

    我是正则表达式新手 我需要一些帮助 我阅读了一些与此问题类似的主题 但我不知道如何解决它 我需要在不在一对大括号内的每个空格上分割一个字符串 大括号外的连续空格应被视为单个空格 TEST test test test test test t
  • 将上部字符转换为下部字符,将下部字符转换为上部字符(反之亦然)[重复]

    这个问题在这里已经有答案了 我需要将某些字符串中的所有较低字符转换为较高字符 并将所有较高字符转换为较低字符 例如 var testString heLLoWorld 应该 HEllOwORLD 转换后 在不保存临时字符串的情况下实现此目的
  • 我可以缩短这个正则表达式吗?

    我需要检查字符串是否符合特定的 ID 格式 ID的格式如下 aBcDe fghIj KLmno pQRsT uVWxy 由五个大写或小写字母组成的五个块的序列 由一个破折号分隔 我有以下有效的正则表达式 string idFormat a
  • 正则表达式拆分数字和字母组,不带空格

    如果我有一个像 11E12C108N 这样的字符串 它是字母组和数字组的串联 如何在中间没有分隔符空格字符的情况下分割它们 例如 我希望分割结果为 tokens 0 11 tokens 1 E tokens 2 12 tokens 3 C
  • 使用 sed 删除大括号对之间的所有内容

    我有一个看起来像这样的字符串 B F blue master F red f k b f k b K black B F green 我想删除匹配的子字符串 它可能包含也可能不包含相同顺序的其他子字符串 我应该得到 master 作为最终输
  • Python:删除字符串开头的数字

    我有一些这样的字符串 string1 123 123 This is a string some other numbers string2 1 This is a string some numbers string3 12 3 12 T
  • Perl 非贪婪

    我遇到非贪婪正则表达式 regex 的问题 我已经看到有关于非贪婪正则表达式的问题 但它们没有回答我的问题 Problem 我正在尝试匹配 lol 锚点的 href Note 我知道这可以通过 Perl HTML 解析模块来完成 我的问题是
  • 为什么我只得到第一个捕获组?

    https stackoverflow com a 2304626 6607497 https stackoverflow com a 2304626 6607497 and https stackoverflow com a 370042
  • 将多个表映射到实体框架中的单个实体类

    我正在开发一个旧数据库 该数据库有 2 个具有 1 1 关系的表 目前 我为每个定义的表定义了一种类型 1Test 1Result 我想将这些特定的表合并到一个类中 当前的类型如下所示 public class Result public
  • Vim 搜索模式,如果出现则删除到行尾

    我正在尝试在文本文件中搜索特定模式 如果出现这种模式 则意味着该行的其余部分不需要 因此可以删除 我尝试过使用以下命令 但到目前为止还没有成功 s pattern d g pattern d 如果有人有任何建议 他们将不胜感激 would
  • 什么时候在“strsplit”中设置“perl=TRUE”不起作用(按预期或根本不起作用)?

    我只是在尝试优化一些代码时做了一些基准测试并观察到strsplit with perl TRUE is faster比跑步strsplit with perl FALSE 例如 set seed 1 ff lt function paste
  • 有人能给我一个 1 到 5 之间数字的正则表达式吗

    有人能给我一个 1 到 5 之间的单个数字的正则表达式吗 例如输入必须是 1 到 5 之间的数字 55 或 23 不匹配 尝试使用anchors http www regular expressions info anchors html
  • Python 正则表达式中的 \B+ 与 [\B]+ 与 [^\b]+

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

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

    这是在 javascript 中验证电子邮件地址的正则表达式 我不确定是否可以直接在 PHP 中使用它 a z d u00A0 uD7FF uF900 uFDCF uFDF0 uFFEF a z d u00A0 uD7FF uF900 uF
  • 如何扩展路径中的波形符(~)[重复]

    这个问题在这里已经有答案了 我有一个 shell 脚本 可以从用户那里获取目录路径 但我需要检查目录是否为空 如果用户将他的主路径与 而不是绝对路径 所以我无法检查它ls echo Specify your project root dir
  • 数字和小数的输入掩码

    在测试我的程序后 我发现了以下错误 我在 sqlserver 中的表包含 价格数字 6 2 我的程序的用户输入价格 555 00 就很好了 但是当他输入 555555 时 这是错误的 所以我需要指定掩码 其中尾数是可选的 0 到 999 小

随机推荐

  • 如何检查ResponseWriter是否已经写入

    使用Golang的net http https golang org pkg net http 包裹 我如何检查是否ResponseWriter已写至 我收到以下错误消息 http 多个response WriteHeader调用 当然 我
  • Minecraft 插件 ScheduleSyncDelayedTask 错误

    我遇到了一个问题 并且在制作 Minecraft 插件和编写一般代码方面还很陌生 我正在尝试制作一个插件 在执行第二个命令之前等待大约 15 秒 但是当我尝试执行 plugin new Runnable 时 我现在的代码出现错误 我做了一些
  • Windows Phone 的捏合和缩放行为

    是否可以在 Windows Phone 8 中创建捏合和缩放到图像控件的行为 我正在尝试在我的应用程序中将捏合和缩放以及旋转应用到图像 在一个论坛中 我发现手势侦听器已被弃用 并且他们不提倡使用手势来实现 那么有人可以为我建议一种替代方法吗
  • 重新安装应用程序后 UILocalNotification 触发

    我的应用程序有一个使用 UILocalNotification 的闹钟功能 并且效果很好 但是 如果用户卸载该应用程序 然后重新安装它 他将立即收到所有 中间 通知 我曾尝试致电 UIApplication sharedApplicatio
  • SwiftUI ProgressView 在列表内时不显示

    在下面的简单示例中 您会发现第一次点击时Toggle Loading the ProgressView按应有的方式显示 但第二次 第三次点击 却没有显示 看来是周围的List造成的 有什么想法以及如何使其发挥作用吗 struct Conte
  • 使用 Java 使用 BouncyCastle 生成 X509Certificate

    这就是我现在生成数字证书的方法 现在我可以生成一个带有私钥密码保护的数字证书 public static void main String args throws Exception Security addProvider new Bou
  • WPF 自定义路由事件 - 如何取消订阅?

    如何从一个自定义路由事件中注销 我有以下代码 非常标准的自定义路由事件 Dispatch the Video Detection Movements public delegate void MovementRoutedEventHandl
  • 使用 r 正则表达式删除第一个数字后的字符串

    如何删除字符串第一个数字之后包含的所有内容 x lt c Hubert 208 apt 1 Mass Av 300 block 3 After 这个问题 https stackoverflow com questions 37666077
  • Cygwin 的 bash 出错后变得极其缓慢

    我意识到还有一些关于为什么 Cygwin 明显很慢的问题 但这个案例似乎很独特 我遇到了一些问题 报告了很多错误 然后重新启动后 从 bash 启动的任何进程都非常慢 老实说 我不知道是什么原因造成的 我检查了taskmgr中的进程优先级
  • C# 广播是UDP消息,监听多个回复

    我正在尝试编写一些执行 UDP 广播的代码 然后侦听来自远程服务器的答复 说明它们存在 它用于识别子网上运行服务器应用程序的计算机 因此基本上会发出 谁在那儿 并听取所有答复 我在 Java 中有这个 工作完美 它将 DatagramPac
  • 导入 CSS 最终出现错误

    最近我进入了这个网站 http thecodeplayer com 并发现了几个非常酷的设计 但在其中一些设计中 在 CSS 部分中有一段用于导入的代码片段 如下所示 import url http fonts googleapis com
  • 发送密钥后 Selenium WebElement 值为空

    我正在运行一些简单的表单测试 其中值是添加的字段 将每个值添加到字段后 input SendKeys value 我想检查该字段中的值是否正确 这听起来可能很不寻常 但该字段可能附加了 ajax 搜索 如果搜索没有返回匹配项 则该字段将为空
  • 如何在使用旧版本 gcc 的系统上动态链接到 libc.so.6、libstdc++.so.6 的本地副本

    我的代码是用 c 2011 编写的 并用 g 4 8 编译的 但是 我的系统管理员不会从 gcc g 4 1 升级计算集群 我收到以下错误 lib64 libc so 6 version GLIBC 2 14 not found requi
  • 如何检测文件名中的常见字符串组

    我正在尝试找出一种检测文件组的方法 例如 如果给定目录有以下文件 生日001 jpg 生日002 jpg 生日003 jpg Picknic1 jpg Picknic2 jpg 下午 jpg 我想将列表压缩为类似的内容 生日 3张 野餐 2
  • 在 Matlab 中按下某个键停止无限 while 循环

    我有一个无限的 while 循环 我想在按下键盘按键时停止它 伪代码 While 1 do stuff listening for key if key is pressed break end end 功能waitforbuttonpre
  • 使用JQUERY/JSON自动填充选择下拉框

    好吧 我花了很多时间查看示例 但找不到一个对我的情况有足够帮助的示例 我有一个 JSON 文件 对此示例进行了简化 Company Position Manager Name 11 joe 12 bill 166 John Position
  • 在没有“new List”的情况下初始化列表属性会导致 NullReferenceException

    using System using System Collections Generic class Parent public Child Child get set class Child public List
  • 您可以用 PHP 将送货地址传递给 Stripe Checkout 吗?

    我在用着Stripe 结帐 API https stripe com docs checkout integration builder指导网站用户付款 有没有办法将送货地址传递到托管结帐页面 以便从推荐人而不是 Stripe 本身收集该地
  • 如何使用 jquery 检测 IE11 [重复]

    这个问题在这里已经有答案了 我有代码 browser 来检测浏览器 并根据结果确定一些布局样式 但现在有了 ie 11 browser 将提供 mozilla v 11 有什么修复建议吗 尝试这个 var isIE11 navigator
  • 正则表达式太贪婪了

    我正在尝试编写一个正则表达式 但它太贪心了 输入字符串可以采用以下格式之一 STUFF 12 1234 or STUFF 1234 我想要做的是创建一个正则表达式来抓取最后一个之后的字符 所以在上面的例子中 这将是数字 1234 最后一个之