我需要一个正则表达式结果,不包括匹配模式的开头和结尾的子字符串
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我需要一个正则表达式结果,不包括匹配模式的开头和结尾的子字符串相关的知识,希望对你有一定的参考价值。
我有一个模式,我需要匹配,总是一个日期“_YYYYMMDD。”。但是,我不想包含“_”和“。”。在结果中。我有一个成功匹配上面的正则表达式模式。它太复杂了,不能包含在这里,因为我必须手工编写并将其搞砸。
我只想说我有一个模式:
[_](lots of stuff in the middle)[.]
它工作正常,但我不想包括“_”和“。”
任何答案都非常感谢。谢谢!
答案
要使下划线和点与模式匹配而不将其包含在完整匹配的文本中,您需要在正则表达式模式中使用外观。以下正则表达式将匹配_
之后的日期,然后是.
(?<=_)\d{8}(?=\.)
此外,如果要将年,月和日期部分捕获到自己的捕获组中,可以使用此正则表达式并捕获group1中的year部分,group2中的月份和group3中的日期,
(?<=_)(\d{4})(\d{2})(\d{2})(?=\.)
Demo with different parts of date into their own groups
另一答案
最简单的方法是将结果中的第一个和最后一个字符切片。你可以通过字符串长度来做到这一点:
result="${result:1:${#result}-2}"
(或result="${result:1:8}"
,因为长度将是恒定的)
或者按特定字符:
result="${result#_}"
result="${result%.}"
以上是关于我需要一个正则表达式结果,不包括匹配模式的开头和结尾的子字符串的主要内容,如果未能解决你的问题,请参考以下文章