正则表达式实现对地址第一个区域的字符串截取

有如下地址类型的字符串:

田家庵区淮河新城二期17,2,404

兰溪市金圆上都18幢

荔县管池镇

要截取出第一个区域的字符串,以上3个截取的值分别为: 田家庵区  兰溪市 荔县

对应代码,初始写为

var value = Regex.Match(lc[2], ".+[市区县镇路道街]{1,1}");

后来发现其默认是贪婪模式,如"荔县管池镇",会把后面的镇也截取进去,于是修改为

var value = Regex.Match(lc[2], ".+?[市区县镇路道街]{1,1}");

在公司电脑上仍然会多截取(后在家电脑上测试,又能正确通过)

var value = Regex.Match(lc[2], ".+?[市区县镇路道街]{1,1}?");

添加2个阻止贪婪模式后,肯定不会再多截取了。

时间: 2024-10-19 01:54:02

正则表达式实现对地址第一个区域的字符串截取的相关文章

使用正则表达式匹配IP地址

如何使用正则表达式匹配IP地址?这是很常见的任务.说难也难,说易也易,取决于在匹配的精确度以及正则表达式复杂度之间很好的折中. 通常,IP地址以点分十进制方式表示,IP地址分为4段,以点号分隔.要对IP地址进行匹配,首先要对其进行分析.0.0.0.0 - 255.255.255.255 一个简单的正则表达式: [0-9]+(?:\.[0-9]+){0,3} 或者 ^(?:[0-9]{1,3}\.){3}[0-9]{1,3}$ 它能够完成我们的任务,但是像"3948.3.89.34238"

Android正则表达式验证邮箱地址

1 // 邮箱有效性验证 2 Pattern pattern = Pattern 3 .compile("\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*"); 4 Matcher mc = 5 pattern.matcher(RegistMail.getText().toString().trim()); 其中RegistMail为一个EditText控件,用来处理用户的邮箱输入. Android正则表达式验证邮箱地址,布布扣,bu

Java 正则表达式匹配邮箱地址

作者 : 卿笃军 正则表达式中的部分元字符: 元字符 正则表达式中的写法 意义 . . 代表任意一个字符 \d \\d 代表0~9的任何一个数字 \D \\D 代表任何一个非数字字符 \s \\s 代表空白字符,如:'\t','\n' \S \\S 代表非空白字符 \w \\w 代表柯用作标示符的字符,单不包括'$' \W \\W 代表不可用作标示符的字符 . . 正则表达式,限定修饰符: 限定修饰符 意义 示例 ? 0次或1次 A? * 0次或多次 A* + 1次或多次 A+ {n} 正好出现

C++11标准 STL正则表达式 验证电子邮件地址

转自:http://www.cnblogs.com/yejianfei/archive/2012/10/07/2713715.html 我们最经常遇到的验证,就是电子邮件地址验证.网站上常见.各种网页脚本也都常用“正则表达式”(regular expression)对我们输入的电子邮件地址进行验证,判断是否合法.有的还能分解出用户名和域名.现在用C++语言实现一下电子邮件地址验证程序,用的是C++ 11标准新增加的STL正则表达式. 源代码如下,该代码已在Visual Studio 2010上验

C#中使用正则表达式提取超链接地址的集中方法

一般在做爬虫或者CMS的时候经常需要提取 href链接或者是src地址.此时可以使用正则表达式轻松完成. Regex reg = new Regex(@"(?is)<a[^>]*?href=(['""]?)(?<url>[^'""\s>]+)\1[^>]*>(?<text>(?:(?!</?a\b).)*)</a>"); MatchCollection mc = reg.Ma

正则表达式,不匹配多个长度不等字符串

正则表达式,不包含多个长度不等字符串. 因为多数对于零宽断言检测的讲解中并没有对多个不等长字串做过说明,因此这篇文章在此举例. 由于是长度不相等,所以不能用中括号或的方式,而且不进行消费,所以只能是断言检测. 由于是不匹配(不包含)因此是负向,再由于是在所要匹配的字符串之前的检查,因此是后行(相对于正则消费字符串的方向) 因此要使用"零宽负向后行断言检测". 工作中同事遇到问题,如下语句 没色差 没有色差 无色差 色差,有色差 色差太大,别的地方穿了才知道了 哈哈哈色差 色差 目标:匹

memcpy用指针的实现通过判断地址是否重合解决掉字符串结束符(&#39;\0&#39;)问题

#include<stdlib.h> #include<stdio.h> #include<string.h> //memcpy的实现 int Mymem(char *dest, char *src, int size) { if (dest == NULL || src == NULL || size == 0) { return -1; } char *d = NULL; char *s = NULL; d = dest; s = src; //if ((unsig

vim实现代码缩进和可视区域的字符串替换

今天2014年9月13号,实现了vim下的代码自动缩进和替换可视区域的字符串,之前一直在用vim这个强大的编辑器,它的强大只有用了的人才知道,现在把这两个很强大的功能展示出来,有个这两个功能,即使你写代码时没有进行缩进,或者是要修改指定区域的字符串时你都会得心应手,闲言少叙,看实现: 1.代码的自动缩进: i:打开vim编辑器,随便打开一个代码,此时代码没缩进,如下图: 现在重点来了,执行命令: 我要实现全部缩进,所以把光标点在代码的开始处,Ctr-v进入可视化区域; G 选中至全部代码的最后一

python中利用正则表达式匹配ip地址

现在有一道题目,要求利用python中re模块来匹配ip地址,我们应如何着手? 首先能想到的是ip地址是数字,正则表达式是如何匹配数字的呢? \d或[0-9] 对于这个问题,不要一下子上来就写匹配模式,应该一步步分解,把复杂的问题简单化 比如ip地址,我们可以总结一下规律 1. 它是一个字符串 2. 字符串内部是由4个1-3位的数字和3个.组成 3. 数字的范围是0-255 接下来,我们先试一下匹配第1个数字 第一步:尝试匹配192.168.100.123中的192 >>> import