使用正则表达式从字符串中获取子字符串
Posted
技术标签:
【中文标题】使用正则表达式从字符串中获取子字符串【英文标题】:Get substrings from string using regular expression 【发布时间】:2019-05-02 16:19:27 【问题描述】:我正在尝试使用 RegEx 从一个大字符串中获取子字符串。 子串的格式如下:
以数字 00-99 开头,后跟等号 =。 可能包含至少一个字符。任何字符。 以下划线“_”结尾。示例子字符串:
01=#010.0000#001.0000#+10.0#AA_
02=#020.0000#002.0000#+20.0#BB_
完整字符串示例:
01=#010.0000#001.0000#+10.0#AA_02=#020.0000#002.0000#+20.0#BB_
我尝试了这个表达式,但结果是我得到了完整的字符串。
^\d2=.+_$
我错过了一些东西。有什么帮助吗?
【问题讨论】:
如果你想要一个字符串的一部分,那么你首先需要删除锚^
和$
,因为这将始终匹配整个字符串或根本不匹配。
【参考方案1】:
你可以使用
\d2=.*?_(?=\d2=|$)
见regex demo
您也可能在匹配之前不需要数字,(?<!\d)
否定后向:
(?<!\d)\d2=.*?_(?=\d2=|$)
\d2=.*?_(?=\d2=|$)
模式匹配 2 个数字,=
,然后是除换行符之外的任何 0+ 字符,尽可能少,直到第一个有两个数字的 _
和它之后的 =
或在字符串的末尾。
【讨论】:
请注意,如果有更具体的要求,您可能希望使您的模式更详细。见\d2=(?:#[-+]?\d+\.\d+(?:_[-+]?\d+\.\d+)*)+_[a-zA-Z]2_
demo。以上是关于使用正则表达式从字符串中获取子字符串的主要内容,如果未能解决你的问题,请参考以下文章