我有如下的数据, 集装箱号,ID号;
INKU6147578,100;ECMU9146728,34578;BHCU4907478,1001;例如,我搜索集装箱号尾数为78的,要求返回结果为INKU6147578,100;BHCU4907478,1001;
我要找箱号尾数为8的,必须返回INKU6147578,100;ECMU9146728,34578;BHCU4907478,1001;
我要找箱号为77的,就返回空字符串请问正则表达式如何写?
INKU6147578,100;ECMU9146728,34578;BHCU4907478,1001;例如,我搜索集装箱号尾数为78的,要求返回结果为INKU6147578,100;BHCU4907478,1001;
我要找箱号尾数为8的,必须返回INKU6147578,100;ECMU9146728,34578;BHCU4907478,1001;
我要找箱号为77的,就返回空字符串请问正则表达式如何写?
解决方案 »
- 求一方法:关于字符串处理
- winform dev中的gridcontrol控件,多行选择,最后选择行失效
- 为什么会算错????一个神奇的问题
- 已有Oracle数据库是否必须安装客户端?
- 求VS2005调用SAP的RFC的SourceCode....无限等待Help
- 如何捕获tab键
- 求DBF文件的连接串
- 使用IList实现了一个Collection的时候发现每次进行list添加时会将原有的list重新添加一次
- 小问题,菜鸟问题,各位帮忙看一下
- 请问C#中实现象vb中的chr()和asc()两个函数是如何实现的。谢谢!
- 我如何关闭线程?我发现程序关闭后,windows任务管理器仍有??
- 新手上路,各位多多照顾:一个绘图控件的问题
在家 没有调试 如果错误 还情见谅
-------------看数据结构,觉得应该先以’;‘号断句
78可以任意替换为你想要的数字
测试数据INKU6178578,100;ECMU9146728,34578;BHCU4907478,1001;
正则[a-zA-Z]{4}[^;]*?78,.*?;
结果
*******************
INKU6178578,100;
*******************
BHCU4907478,1001;测试数据INKU6178578,100;ECMU9146728,34578;BHCU4907478,1001;
正则[a-zA-Z]{4}[^;]*?8,.*?;
结果
*******************
INKU6178578,100;
*******************
ECMU9146728,34578;
*******************
BHCU4907478,1001;
[a-zA-Z]{4}[^;]*?78,.*?;
jimh(Jimmy)的(?<item>\w+78,\d+;)也验证成功
使用Reges.Matchs()另外,你在上头提到“少用组 少回蒴 少用*”,可是这里头为何用了好几个*号?
+和*是一个性质 只说少用 没说不用jimh(Jimmy)的(?<item>\w+78,\d+;)也验证成功
我改改[a-zA-Z]{4}.+?78,\d+;
因为箱号的总长度是11字节,其中有4字节固定是英文字母,其余为数字
所以正则做了一下判断
当然 如果你能确定你匹配的字串都是有4字节固定是英文字母,其余为数字,那jimh的正则就够了
把组去掉\w+78,\d+;
如何使获取到的宽度就是11个字节的箱号?
\w与任何单词字符匹配。等效于 Unicode 字符类别 [\p{Ll}\p{Lu}\p{Lt}\p{Lo}\p{Nd}\p{Pc}\p{Lm}]。如果用 ECMAScript 选项指定了符合 ECMAScript 的行为,则 \w 等效于 [a-zA-Z_0-9]。
不会获取宽度的
string 你搜索的字串="78";
int 你搜索的字串的长度=你搜索的字串.Length();
int temp=8-你搜索的字串的长度;
string 正则=@"[A-Z]{4}\d{"+temp.ToString()+"}"+你搜索的字串+@",\d+;";
[a-zA-Z]{4}\d{7}(?<=XX),[^;]*;前4位是字母
再跟7个数字
你要查找的字符XX写在(?<=)里面
后面按实际情况匹配就行了
[A-Z]{4}\d{7}(?<=XX),[^;]*;