如何使用Regex匹配首个以特定字符开头的单词?
如何用正则表达式抓取首个以Test-开头的单词?
嘿,这个需求其实挺容易实现的,用正则表达式就能精准搞定!我分两种常见场景给你说明:
场景1:抓取独立的、首个以Test-开头的单词
这里的“单词”指被空白/标点符号分隔的序列(比如你的例子Test-12.2.1),推荐用这个正则:
\bTest-\S+
正则拆解:
\b:单词边界,确保Test-前面不会跟着字母、数字或下划线(保证这是一个独立的单词)Test-:固定匹配你要找的前缀\S+:匹配后续所有非空白字符,直到遇到空格、换行或其他空白符号为止(刚好覆盖整个目标单词)
代码示例(Python):
import re # 示例文本 input_text = "这是一段测试文本 Test-12.2.1 后面还有另一个 Test-3.4.5" # 查找第一个匹配项 match_result = re.search(r'\bTest-\S+', input_text) if match_result: target_word = match_result.group() print(target_word) # 输出:Test-12.2.1
代码示例(JavaScript):
const inputText = "这是一段测试文本 Test-12.2.1 后面还有另一个 Test-3.4.5"; const regex = /\bTest-\S+/; const matchResult = inputText.match(regex); if (matchResult) { const targetWord = matchResult[0]; console.log(targetWord); // 输出:Test-12.2.1 }
场景2:抓取字符串中第一个出现的以Test-开头的字符序列(不管是否独立)
如果你的文本里可能存在类似abcTest-6.7.8这种非独立的序列,且需要优先抓取这种第一个出现的,直接用这个正则配合搜索即可:
Test-\S+
因为search(Python)或match(JavaScript)默认会从左到右查找第一个匹配项,不需要额外的前缀匹配。
补充说明:
如果你的文本包含换行符,需要让正则能跨行匹配的话:
- Python中可以添加
re.DOTALL参数:re.search(r'\bTest-\S+', input_text, re.DOTALL) - JavaScript中可以添加
s修饰符:/\bTest-\S+/s
内容的提问来源于stack exchange,提问作者Sandip Subedi
相关产品推荐
相关产品推荐

