【RE】regular expression

本文介绍正则表达式的常见语法及应用案例,包括电子邮件、电话号码的格式匹配,以及如何在Java和JavaScript中使用正则表达式进行字符串操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、regex语法:

编辑工具 : regexRuddy 

e-mail: ([\w-]+)@([\w-]+)(\.[a-zA-Z]{2,5}){1,2}

电话: (0\d{2,3}-\d{7,8})|(1[34568]\d{9}) 

 

去除首尾空格: String str = " abc ".replaceAll("(^\\s+)|(\\s+$)","");


零宽断言:(?=pattern) 正向肯定预查,非获取匹配,可将大量有规则的数据提取出来


2、Java中使用正则表达式


public class re {
	public static void main(String[] args) {
		Pattern p = Pattern.compile("(\\d{4})([a-z]{2})");
		Matcher m = p.matcher("abcdefgh1234fdd5678dfadf");
		
		//System.out.println(m.matches()); //匹配整个目标字符串
		//System.out.println(m.find()); 

		List<String> list = new ArrayList<String>();
		
		while(m.find()){
			System.out.println(m.group(0));
			System.out.println(m.group(1));
			System.out.println(m.group(2));
			list.add(m.group());
		}
		
		String [] str = "abcd2efgh4".split("\\d+");
		for(int i=0;i<str.length;i++)
			System.out.println(str[i]);		
	}
}


3、javascript中使用正则表达式

<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>

<script>

	String.prototype.trim = function(){  //去除空格
		return this.replace(/(^\s+)|(\s+$)/g,"");
	}
	
	function testRegex(){
		//var re = /\d{4}/g;
		//var r2 = new RegEx("\\d{4}","g");
		
		var re = new RegExp("(\\d{2})([a-z]{2})","ig");
		//var result = re.exec("33dd44ff2fd888oo");
		//alert(result);
		alert(re.test("3333ff2ddd"));
	}
	
	function check(testform){
			var username = testform.username.value.replace(/(^\s+)|(\s+$)/g,"");
			var flag = true;
			document.getElementById("usermsg").innerHTML="";
			if(username.length==0){
				document.getElementById("usermsg").innerHTML="用户名不能为空!";
				flag = false;
			}else{
				if(!(/^\w+$/.test(username))){
					document.getElementById("usermsg").innerHTML="用户名必须是:字母、数字、下划线!";
					flag = false;
				}
			}
			return flag ;
	}
	
</script>
</head>
<body>
	<input type="button" value="测试正则" onclick="testRegex();" />
	<form action="testform.jsp" name="testform" onsubmit="return check(this);">
		用户名:<input type="text" name="username" /><span id="usermsg"></span><br />
		<input type=submit value=提交 />
	</form>
</body>





### 正则表达式简介 正则表达式是一种强大的工具,用于字符串匹配和操作。然而,在某些情况下其行为可能不如预期那样直观[^1]。 #### 基本字符匹配 最简单的正则表达式由单个字面量字符组成。除了特殊的元字符`*+?()|`外,大多数字符都会按原义进行匹配。为了匹配这些元字符本身,则需要用反斜杠`\`对其进行转义,例如`\+`表示匹配一个实际存在的加号[^3]。 ```python import re pattern = r'\+' # 匹配 '+' 字符 string_with_plus = "The result is 2 + 2." match_result = re.search(pattern, string_with_plus) if match_result: print(f"Found '{match_result.group(0)}' at position {match_result.start()}") # Found '+' at position 14 else: print("No match found.") ``` #### 使用预定义字符集 有时需要查找特定类型的字符而不仅仅是具体的字母或符号。可以利用预定义好的字符集合简化模式构建过程: - `\d`: 数字 `[0-9]` - `\w`: 单词字符(字母、数字及下划线) - `\s`: 空白字符(空格、制表符等) ```python text = "Price: $123.45" price_pattern = r"\$\d+\.\d{2}" # 查找形如$123.45的价格格式 result = re.findall(price_pattern, text) print(result) # ['\$123.45'] ``` #### 定位与边界条件 当希望限定某个子串位于整个输入序列的开头或结尾时,可借助锚点实现精确控制: - `^`: 行首位置 - `$`: 行尾位置 ```python line_starting_with_hello = "^hello world!" starts_with_hello = re.match(r"^hello", line_starting_with_hello) ends_with_world = re.search(r"world!$", line_starting_with_hello) if starts_with_hello and ends_with_world: print("Line matches both start and end criteria.") # Line matches both start and end criteria. ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值