首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >使用regex匹配提取两个子字符串

使用regex匹配提取两个子字符串
EN

Stack Overflow用户
提问于 2018-04-23 10:02:00
回答 2查看 183关注 0票数 1

我有一个简单的正则表达式和一个字符串。正则表达式模式是(\d*)\*(C.*),字符串是32*C1234*3

我希望使用regex模式从该字符串中提取值32C1234*3

我可以使用以下代码在Perl中实现这一点:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
my $x = "32*C1234*3"; 
if ( my ($x1, $x2) = $x =~ /(\d*)\*(C.*)/ ) {
    print "x1 = $x1, x2 = $x2\n";
} else {
    print "No match\n";
}

下面是我使用Scala2.11的尝试:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
val s = "32*C1234*3"
val re = """(\d*)\*(C.*)""".r
(r findFirstIn s).toList

当我运行它时,我只得到一个值(它是原来的列表,后面是空字符),而不是32C1234*3。如何修复scala代码?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-04-23 10:12:14

使用findFirstMatchIn,然后使用Match对象选择所需的组:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
val m = re.findFirstMatchIn(s).get
val x1 = m.group(1)
val x2 = m.group(2)

将变量mx1x2设置为:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
m: scala.util.matching.Regex.Match = 32*C1234*3*
x1: String = 32
x2: String = C1234*3*

Perl中的if ...-part被Scala中的Option[Match]所取代。如果不确定字符串是否实际匹配,则必须首先检查findFirstMatchIn isEmpty的结果是否匹配。或者,您可以在返回的Option上进行模式匹配。在上面的示例中,我只使用了get,因为很明显存在匹配。

findFirstMatchIn没有锚定,因此字符串"blah|32*C1234*3*"将返回与相同组相同的匹配。

票数 1
EN

Stack Overflow用户

发布于 2018-04-23 10:12:57

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
s match {
  case re(a,b) => s"x1 = $a , x2 = $b"
  case _ => "error"
}

在regex模式中有两个捕获组,所以匹配模式必须提供2个变量来保存匹配的值。

要将所有匹配的捕获组作为List[String]获取,您可以这样做:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
re.unapplySeq(s).getOrElse(List.empty)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49987311

复制
相关文章
mongodb 字符串查找匹配中$regex的用法
官网地址:https://docs.mongodb.com/manual/reference/operator/query/regex/#regex-case-insensitive
庞小明
2018/12/10
6.1K0
Go语言中使用正则提取匹配的字符串
我们在做爬虫的过程中,需要对爬取到的内容处理,比如说提取出我们需要的内容和文本,比如城市信息、人员信息等等,除了字符串查找外,使用正则匹配是比较优雅和方便的方案。
飞雪无情
2018/08/28
9.9K0
掌握 Python RegEx:深入探讨模式匹配
正则表达式通常缩写为 regex,是处理文本的有效工具。本质上,它们由一系列建立搜索模式的字符组成。该模式可用于广泛的字符串操作,包括匹配模式、替换文本和分割字符串。
数据科学工厂
2023/08/10
2310
掌握 Python RegEx:深入探讨模式匹配
C:基于GNU regex(regex.h)regexec实现正则表达式多次匹配
GNU regex是GNU提供的跨平台的POSIX 正则表达式库(C语言)。 不算GNU提供的扩展函数,POSIX标准的regex库总共就4个函数regcomp,regerror,regexec,regfree. 我们知道 regexec 不能通过一次调用找到字符串中所有满足匹配条件的字符串位置,所以需要通过步进偏移的方式循环执行regexec才能把字符串中所有满足条件的匹配找出来, 每一次匹配的起始偏移是上一次匹配到的字符串结束偏移。
10km
2021/11/17
2.4K1
字符串匹配算法_多字符串匹配
从好后缀的后缀子串中,找一个最长的且和模式串的前缀子串匹配的 {v},滑动至 {v} 对齐
全栈程序员站长
2022/09/25
1.8K0
字符串匹配算法_多字符串匹配
用正则表达式查找提取替换字符串
C++11标准支持正则表达式后,使用正则表达式查找、提取、替换字符串就无需使用第三方开源库。
gaigai
2019/10/21
4.6K0
用正则表达式查找提取替换字符串
MongoDB模糊查询($regex查询、正则表达式匹配查询)
这里的 i 就是指最上面语法中的那个 options 的值 i 是其的一个选项,代表忽略大小写的意思。 这里 options 还有以下几个选项供使用:
全栈程序员站长
2022/08/23
13.7K0
字符串的匹配算法_多字符串匹配
不要被事物的表面现象所迷惑,这个算法全称:Brute Force,有个拉风的中文名:暴力匹配算法。
全栈程序员站长
2022/09/25
2.2K0
字符串的匹配算法_多字符串匹配
Java字符串匹配_正则匹配替换字符串
public static void main(String args[]) {
全栈程序员站长
2022/09/24
2.6K0
字符串提取
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
喜欢ctrl的cxk
2019/11/08
6380
[算法系列之十二]字符串匹配之蛮力匹配
字符串匹配是数据库开发和文字处理软件的关键。幸运的是所有现代编程语言和字符串库函数,帮助我们的日常工作。不过理解他们的原理还是比较重要的。
全栈程序员站长
2022/09/24
1.7K0
[算法系列之十二]字符串匹配之蛮力匹配
字符串匹配
问题描述 试题编号: 201409-3 试题名称: 字符串匹配 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 问题描述   给出一个字符串和多行文字,在这些文字中找到字符串出现的那些行。你的程序还需支持大小写敏感选项:当选项打开时,表示同一个字母的大写和小写看作不同的字符;当选项关闭时,表示同一个字母的大写和小写看作相同的字符。 输入格式   输入的第一行包含一个字符串S,由大小写英文字母组成。   第二行包含一个数字,表示大小写敏感的选项,当数字为0时表示大小写不敏感,当数字为1时表示大小写敏感。   第三行包含一个整数n,表示给出的文字的行数。   接下来n行,每行包含一个字符串,字符串由大小写英文字母组成,不含空格和其他字符。 输出格式   输出多行,每行包含一个字符串,按出现的顺序依次给出那些包含了字符串S的行。 样例输入 Hello 1 5 HelloWorld HiHiHelloHiHi GrepIsAGreatTool HELLO HELLOisNOTHello 样例输出 HelloWorld HiHiHelloHiHi HELLOisNOTHello 样例说明   在上面的样例中,第四个字符串虽然也是Hello,但是大小写不正确。如果将输入的第二行改为0,则第四个字符串应该输出。 评测用例规模与约定   1<=n<=100,每个字符串的长度不超过100。
geekfly
2022/05/06
8260
字符串匹配算法 -- 朴素匹配
为什么叫做朴素匹配,我理解的就是这是一种寻常想法,简单粗暴的算法。是一种暴力的算法,不考虑其时间复杂度以及效率。只要达到匹配的目的即可。
lexingsen
2022/02/24
1.9K0
字符串匹配算法 -- 朴素匹配
字符串匹配算法_字符串模式匹配算法
网络信息中充满大量的字符串,对信息的搜寻至关重要,因此子字符串查找(即字符串匹配)是使用频率非常高的操作:给定一段长度为N的文本和长度为M的模式字符串(N≥M),在文本中找到一个和模式串相匹配的子串。由这个问题可以延伸至统计模式串在文本中出现的次数、找出上下文(和该模式串相符的子字符串周围的文字)等更复杂的问题。
全栈程序员站长
2022/08/02
2.9K0
字符串匹配算法_字符串模式匹配算法
BZOJ4503: 两个串(bitset字符串匹配)
就是记录匹配串中每个元素出现的位置,将第\(i\)个位置的bitset右移\(i\)位后与起来
attack
2018/10/11
6050
Harris角点提取后怎么匹配?
对于角点匹配算法的研究本文主要采用Harris算法提取图像中的角点,通过相似测度得到粗匹配点集,然后简单分析了两种提纯匹配点的简单聚类法和视差梯度约束法。 1. Harris算法角点检测 人眼对角点的识别通常是在一个局部的小区域或小窗口完成的。如果在各个方向上移动这个特征的小窗口,窗口内区域的灰度发生了较大的变化,那么就认为在窗口内遇到了角点。如果这个特定的窗口在图像各个方向上移动时,窗口内图像的灰度没有发生变化,那么窗口内就不存在角点;如果窗口在某一个方向移动时,窗口内图像的灰度发生了较大的变化,而在另一
智能算法
2018/04/03
2.5K0
Harris角点提取后怎么匹配?
Python Re 正则表达式 数据匹配提取 基本使用
例如:以上就是今天要讲的内容,本文仅仅简单介绍了re的使用,而re提供了大量能使我们快速便捷地处理数据的函数和方法,后续有关于re的常用代码会在这篇博客中持续更新。 转 python内置正则表达式(re)模块官方文档简要中文版:https://www.cnblogs.com/rosesmall/archive/2012/12/26/2833681.html
EXI-小洲
2022/12/13
1.4K0
字符串提取函数
今天要跟大家分享三个excel中使用频率最高的字符串提取函数——left/right/mid函数。 ▽▼▽ 这三个函数分别对用截取某一单元格文本的左、右、中间某一长度的字符。 ●●●●● 1、LEFT
数据小磨坊
2018/04/10
1.5K0
字符串提取函数
字符串 模式匹配
本文介绍了什么是程序员的内功——算法以及其重要性。算法是程序的核心,它能够高效地解决问题。文章通过一些例子详细讲解了算法的概念和其具体实现,并探讨了算法对于程序员的职业发展以及日常生活中的影响。
静默虚空
2018/01/05
1.5K0
字符串 模式匹配
点击加载更多

相似问题

Regex:提取多个子字符串,忽略变体匹配

26

使用regex在java中提取两个子字符串。

25

使用JQ和regex提取匹配的regex字符串

25

提取两个子字符串之间匹配的字符串部分。

68

使用regex提取匹配的两边字符

37
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文