我需要提取子字符串,因为存在另一个子字符串。在下面的示例中,单词ERROR:继续值12345678.我需要值12345678.在第二个示例中,ERROR:不存在。因此我不需要任何结果。这是我得到的:
ERROR:.*(\d)
20170808错误:TXN 12345678达到了请求限制。
20170808警告:TXN 22345678待定到期。
如果您是正则表达式大师,那么您就知道上面的匹配
错误:TXN 12345678
并且该组仅为数字8.我需要整数。谢谢你的帮助。
答案 0 :(得分:3)
您可以使用
ERROR:.*?(\d+)
请参阅regex demo。在这里,.*?
将尽可能少地匹配除换行符之外的任何0 +字符(因为*?
是一个惰性量词)并且(\d+)
将捕获到组1中的一个或多个数字
或者
ERROR:.*\D(\d+)
见another demo。在这里,.*\D
将匹配除了换行符之外的任何0+字符作为很多(因为*
是一个贪婪的量词),直到并包括最后一个非数字字符(包含\D
)然后(\d+)
将在第1组中捕获一个或多个数字。
选择最适合您的场景的模式(如果数字是ERROR:
之后的第一组数字,则第一个是最佳的;当数字组是一行中的最后一个数字时,第二个最好。