跳到主要内容

1.2 如何使用正则表达式

上节我们知道了正则表达式的用途,尝试了几种正则表达式的使用场景,本节我们将了解如何在各个文本编辑器和程序语言中使用正则表达式。

正则表达式的应用场景非常多,在几乎所有常用的文本编辑器和程序语言中都可以使用正则表达式进行文本的搜索或替换。本节我们学习在几种常见的编辑器和编程语言中如何使用正则表达式。

1.2.1 在编辑器中

Visual Studio Code

Visual Studio Code(VS Code) 是微软公司出的跨平台开源代码编辑器。它也是可以使用正则表达式进行搜索和替换的。

在 VS Code 使用正则表达式主要有两个地方:

一个是在当前打开的文件中,按 Ctrl/⌘ + F 可以打开搜索框(如下图),然后点击搜索输入框右侧的“使用正则表达式”图标打开正则表达式选项。这样就可以在当前文件中使用正则表达式搜索和替换了。

VS CodeVS Code
图1.2.1
VS Code

还有一个是点击工具栏中的放大镜图标或按 Ctrl/⌘ + Shift + F 打开全局搜索框(如下图),启用正则表达式的方法和单文件搜索一样。

VS Code Global SearchVS Code Global Search
图1.2.2
VS Code Global Search

Sublime Text

Sublime Text 做为老牌的文本编辑器,当然也是可以使用正则表达式的。和 VS Code 一样,Sublime Text 也可以在当前文件和全局搜索中使用正则表达式。

Ctrl/⌘ + F 可以打开搜索框(如下图),然后点击搜索输入栏左侧的“正则表达式”图标打开正则表达式选项。这样就可以在当前文件中使用正则表达式搜索和替换了。

Sublime TextSublime Text
图1.2.3
Sublime Text

Ctrl/⌘ + Shift + F 打开全局搜索框(如下图),启用正则表达式的方法和单文件搜索一样。

Sublime Text Global SearchSublime Text Global Search
图1.2.4
Sublime Text Global Search

IDEA 系开发工具

IDEA 系开发工具包括 IntelliJ IDEA Ultimate、IntelliJ IDEA Community、WebStorm、PyCharm、PhpStorm、Android Studio、华为开发者工具等基于 IntelliJ IDEA 开发的开发工具。

IDEA 系开发工具正则表达式的用法和快捷键基本和 VS Code 以及 Sublime Text 一样。

IDEAIDEA
图1.2.5
IDEA

1.2.2 在代码中

Java

import java.util.regex.*;

public class RegexTest {
public static void main(String[] args) {
String text = "这是要匹配的文本,手机号:13800000000、邮箱:xxx@xxx.xx";
Pattern pattern = Pattern.compile("(1\\d{10})|([a-z0-9]+@[a-z0-9.]+)");
Matcher matcher = pattern.matcher(text);
while (matcher.find()) {
for (int i = 0; i < matcher.groupCount(); i++) {
System.out.println(matcher.group(i + 1));
}
}
}
}
JavaJava
图1.2.6
Java

Javascript

const text = "这是要匹配的文本,手机号:13800000000、邮箱:xxx@xxx.xx";

// 测试text中是否有匹配正则的子串,返回boolean类型
const test = /1\d{10}/.test(text);
console.log(test);

// 检查text中是否有和正则匹配的子串,返回匹配结果
let matches;
const regex = /(1\d{10})|([a-z0-9]+@[a-z0-9.]+)/g;
while ((matches = regex.exec(text))) {
console.log(matches);
}
JavascriptJavascript
图1.2.7
Javascript

PHP

$text = "这是要匹配的文本,手机号:13800000000、邮箱:xxx@xxx.xx";

$matches=[];

preg_match_all("/(1\d{10})|([a-z0-9]+@[a-z0-9.]+)/",$text,$matches);

var_dump($matches);
PHPPHP
图1.2.8
PHP

Python

#!/usr/bin/env python3

import re

text = "这是要匹配的文本,手机号:13800000000、邮箱:xxx@xxx.xx"

# 查找全部
findall = re.findall(r'(1\d{10})|([a-z0-9]+@[a-z0-9.]+)', text)
print(findall)

# 全匹配
match = re.match(r'1\d{10}', text)
print(match)

# 搜索
search = re.search(r'1\d{10}', text)
print(search.group())
PythonPython
图1.2.9
Python

Shell

grep -E "^#.*?" 文件名
ShellShell
图1.2.10
Shell
该内容为何方原创,转载请注明本页地址
https://iamhefang.cn/tutorials/正则表达式/第一章-正则表达式入门/1.2-如何使用正则表达式