正则表达式问题: 怎么样才能定义从字符串的第几位开始,例如12345678 怎么写,才能只匹配第四个字符

作者&投稿:离刻 (若有异议请与网页底部的电邮联系)
求助:正则表达式,我要匹配一个字符串开始的前4个字符怎么写?~

package com;public class Kyo{public static void main(String[] args){String a = "AHGX1111111";String reg = "^AHGX.*";System.out.println(a.matches(reg));}}

(^.{2}[01])
. 匹配除了换行符以外的任意字符 {2} 表示2个 [01] 表示第三个是0或1

就拿你所给的“12345678”为例,我个人认为有两种方法:
1. String str = "12345678";
String str2 = str.substring(4); //截取从第四个字符开始的子字符串
然后对str2应用正则表达式进行匹配
2. 直接用正则表达式:
首先注意句点在正则表达式中的含义:
. 匹配除 "\n" 之外的任何单个字符。要匹配包括 '\n' 在内的任何字符,请使用象 '[.\n]' 的模式。
由于是六位数字,而要从第四位开始匹配,前面三位用 . 代替,表示任意字符
即 .{3}\d\d.{2}
表示字符串第四、五个必须为数字,前面3个可以为任意除换行符以外的单个字符,最后两个单字符也为除换行符以外的单字符。

而如果是在MySQL或Oracle的SQL中,正则表达式应该是:
_ _ _\d\d_ _
短下划线与Java、JS、PHP中支持的正则表达式中的句点 . 意义相同,表示任意单个字符,上面的短下划线是连续的,为了便于阅读所以将其用空格分开,实际上是三个连续的短下划线。但SQL中匹配正则表达式用的是LIKE语法,比如
SELECT * FROM people WHERE name LIKE '_ _ abc*';
从people表中选择这样的行:这些行的name列值的第三个字符为a,第四个字符为b,第五个字符为c。

PS:
@tpaxatb,我不知道你是真傻还是装傻。为了得分你诬蔑我倒无所谓,误人子弟就不好了。
1. str.substring(4)应该是第5个字符
你自己搞清楚,这个是得到第五个字符,还是得到从第五个字符开始的子字符串?基础不好不是你的错,基础不好还乱对别人指手画脚就是你的错了。估计你是培训机构出来的吧!真他妈少见啊!
2.[.\n]只代表点(.)和回车,不是点可以匹配包括 '\n' 在内的任何字符的意思
看清楚我说的是“匹配除 "\n" 之外的任何单个字符”,看清楚再发言好不好?

--楼上回答的都很在理,你要是预先知道了你要匹配的在第几位上,用 substring (或 index) 比正则要来的快...

从第四个开始匹配,到第五个结束: $char_4_5 = substring($string, 3,2)

PS: 另外,1楼的第1点和第2点都有错误:
1. str.substring(4)应该是第5个字符
2.[.\n]只代表点(.)和回车,不是点可以匹配包括 '\n' 在内的任何字符的意思

/./s <--Single Line mode

jxqlovejava:

".... 要匹配包括 '\n' 在内的任何字符,请使用象 '[.\n]' 的模式。" <--- 这个形式 [.\n] 可以匹配任何一个字符也是你妈教的?那...过节期间,你替我多多问候她 !!!

两个特殊的符号'^'和'$'。他们的作用是分别指出一个字符串的开始和结束。'.'可以替代任何字符。
"a.[0-9]":表示一个字符串有一个"a"后面跟着一个任意字符和一个数字;
"^.{3}$":表示有任意三个字符的字符串(长度为3个字符);
你也可以使用范围,用大括号括起,用以表示重复次数的范围。
"ab{2}":表示一个字符串有一个a跟着2个b("abb");
"ab{2,}":表示一个字符串有一个a跟着至少2个b;
"ab{3,5}":表示一个字符串有一个a跟着3到5个b。
设匹配第5个字符;字符为x
正则表达式为:"^.{4}x.*"

分组就可以了。
如(c#):
string str = "123456789";
Regex r = new Regex(@"\d{3}(\d{2})\d+");
r.Match(str).Result("$1");

结果是45

匹配第四个 改成 \d{3}(\d{1})\d+

结果是 4

还有问题hi我··

^.{3}4.*$
3代表你想从第几个开始匹配,4代表你想匹配的字符。


宣化区15864246763: 如何使用正则表达式 -
戚樊硫普: ^QTP使用正则表达式有2种方式,一种是在“常量值选项”对话框或“参数选项”对话框的“值”框中输入字符串的正则表达式语法,可以定义正则表达式.选中“正则表达式”复选框,以指示QuickTest将该值作为正则表达式处理. 另一种是...

宣化区15864246763: 正则表达式怎么查找函数定义 -
戚樊硫普: 函数定义double sqrt(x) double x {.return ** } 函数声明时,只用double sqrt() 函数调用时,一般是x2=sqrt(x) 函数调用时,一般是x2 = sqrt(x) 函数定义double sqrt (x) 函数定义double sqrt( x ) 函数定义double sqrt( x2 ) 函数定义double sqrt( _x ) 函数定...

宣化区15864246763: 正则表达式怎么在EXCEL使用 -
戚樊硫普: 工具/材料:Microsoft Office Excel2016版,Excel表格. 1、首先选中Excel表格,双击打开. 2、然后在该界面中,选中要使用正则表达式的单元格. 3、再者在该界面中,公式栏中输入正则表达式的公式“=RegexString(A1,"([\d]+)",1)”. 4、其次在该界面中,单元格里显示正则表达式结果. 5、继续在该界面中,选中单元格,向下拖动. 6、最后在该界面中,成功显示正则表达式结果.

宣化区15864246763: 正则表达式问题 -
戚樊硫普: Pattern p=Pattern.compile("\\d{3,5}"); 定义一个表达式模式,'\'表示下一个字符是特殊字符,'\d'表示数字既0-9,{3,5}表示重复3到5次 总的来看:匹配由3个到5个数字组成的字符串(例如”123“,”2345“等).Matcher m=p.matcher("123-...

宣化区15864246763: 正则表达式 !\\^\\.\\*\\$!([^!]+)! 是什么意思 -
戚樊硫普: 在java中要进行转义,所以转化成标准正则表达式后就是“ !\^\.\*\$!([^!]+)!” 正则表达式中\^ 表示就是^的本身的意思,\. \$ ,同理得知;所以最后你的表达式表示!^.$! 开头后面跟任意非!的字符串重复一次到无穷次,然后以!结束.例如:1321312!^.$! 123!123123. 如果想让字符串只能是!^.$! 123! ,两边没有其他字符的, 那么在你正则的首加上^尾加上$.

宣化区15864246763: 正则式含义 -
戚樊硫普: 概念 编辑 正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑.简介 编辑 正则表达式是对字符串(包括...

宣化区15864246763: 正则表达式好难懂,求高人指点,怎么学?有什么好的理解方法没有?看到那一串符号,晕了... -
戚樊硫普: 1、入门简介 简单的说,正则表达式是一种可以用于模式匹配和替换的强有力的工具.我们可以在几乎所有的基于UNIX系统的工具中找到正则表达式的身影,例如,vi编辑器,Perl或PHP脚本语言,以及awk或sed shell程序等.此外,象...

宣化区15864246763: python正则表达式是什么意思 -
戚樊硫普: 表示任意字符,*表示重复0至多次,.*表示任意字符出现0到多次

宣化区15864246763: 什么是正则表达式,怎样运用,在什么时候运用, -
戚樊硫普: 正则表达式是用来匹配固定字符串格式的.比如规定一个字符串中,只能是数字,只能是字母,或者只能是数字,字母和下划线( _ )的组合.甚至,只能有3个数字,后面跟2个字母...

宣化区15864246763: 用通俗的话解释一下正则表达式,如果能给个vb的事例就更好了.
戚樊硫普: 计算机方面的东西 也很难通俗吧 ,这句应该比较容易懂点 :"用来描述或者匹配一系列符合某个句法规则的字符串的单个字符串." 注意 '语法规则'就是我们写的那个表达式了! 我当时也是源于自己写程序要解决一个问题 才接触到这个知...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网