用正则表达式取特定文字的方法

如何用正则表达式获得指定的一串文字或数字

如图所示:要获取上面的一串数字,应该如何写表达式呢
一、简单粗暴
\d\s\d\s\d\s\d\s\d\s\d\s\d\s\d\s\d\s\d\s
上面是一个数字接一个空格,共5次组合
可以实现,但是如何文本里还有一串这样的数字,会出现两次,可能会出现歧义。
\d{1}\s{1}\d{1}\s{1}\d{1}\s{1}\d{1}\s{1}\d{1}\s{1}\d{1}\s{1}\d{1}\s{1}\d{1}\s{1}\d{1}\s{1}\d{1}\s{1}
上面是一个数字接一个空格,共5次组合,{}里面的数字可以改为连续多个数字连续多个空格的模式
可以实现,但是如何文本里还有一串这样的数字,会出现两次,可能会出现歧义。

对于此种情况,让我们考虑用前缀及后缀来约束结果。来看看下面第二种方法。

二、匹配 姓 名 :\n 检 查 号 : 中间的内容,包含 姓 名 :\n 检 查 号 : 本身

表达式:
姓 名 :[\s\S]*?检 查 号 :

上图的结果,基本得到了要的结果,但是前缀和后缀不是我们要的结果,应该去掉。下面看看第三种方法。
三、匹配 姓 名 :\n 检 查 号 : 中间的内容,不包含 姓 名 :\n 检 查 号 : 本身

表达式:
(?<=姓 名 :\n)[\s\S]*(?=检 查 号 😃

这个方式的好处是,与第一种方法相比,不会有其他的干扰
至此,我们得到比较好的正则表达式解决方法。

posted @ 2024-07-19 10:29  老马识途远  阅读(81)  评论(1编辑  收藏  举报