Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在带引号的字符串中搜索特定字符

在带引号的字符串中搜索特定字符
EN

Stack Overflow用户
提问于 2011-09-08 07:15:20
回答 1查看 162关注 0票数 1

我对正则表达式完全陌生,但我计划很快掌握它。现在,我需要您的帮助来完成以下工作:

我想查找所有位于文字/引号(“)字符串之间的逗号(,)。

例如:

代码语言:javascript
运行
AI代码解释
复制
"bla bla , bla bla"

还有:

代码语言:javascript
运行
AI代码解释
复制
","

但如果它是参数分隔符,则不是这样的,例如:

代码语言:javascript
运行
AI代码解释
复制
Replace("abc","b","f")

如果你知道regexp,也许这很简单,但对我来说(目前)还不是。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-09-08 07:19:57

您可以从下面的内容开始

代码语言:javascript
运行
AI代码解释
复制
"[^"]*"

这是匹配引用内容的最简单方法。然后将其更改为与逗号模式相匹配。

代码语言:javascript
运行
AI代码解释
复制
"[^",]*,[^"]*"

但是您不想捕获逗号,所以您将其设置为一个组

代码语言:javascript
运行
AI代码解释
复制
"[^",]*(,)[^"]*"

然后,为了能够在一个字符串中找到多个逗号,您可以对非捕获组使用重复。

代码语言:javascript
运行
AI代码解释
复制
"(?:[^",]*(,))+[^"]*"

正则表达式在某种程度上是有局限性的,如果使用得当,效果会更好。上面的模式查找引号,查找不带逗号的内容,然后继续查找。它基于第一个组的重复,这样它就可以在字符串中找到可能的逗号(当您进行匹配时,您将在该组的Captures属性中访问它们)。

代码语言:javascript
运行
AI代码解释
复制
var regex = new Regex("\"(?:[^\",]*(,))+[^\"]*\"");
var m = regex.Match("a,b,c");
m.Groups[1].Captures // <-- all commas are captured in this collection

只要字符串本身不包含引号,就可以很好地工作,但是很难使用正则表达式接受带引号的字符串中的转义序列。他们不擅长处理的事情。所以,只要没问题,就随它去吧。

现在来看看当你有这种类型的字符串"a","b"时的问题。使用正则表达式扫描字符串将从左到紧进行匹配,并按此顺序使用字符,如果任何匹配成功,它将无法以任何其他方式继续匹配它。这里的问题是没有引号的带引号的字符串不是成功的匹配(如果我们让它匹配,但忽略它,我们可以解决这个问题)。

我们总是首先尝试我们的初始派生,但回退到我们忽略的简单引号字符串,这样它就会跳过头部,而不会将字符串的中间部分视为有效匹配。这一切都是为了确保状态机,即正则表达式可以跟踪引用值的开始和结束。

代码语言:javascript
运行
AI代码解释
复制
"(?:[^",]*(,))+[^"]*"|"[^"]*"

这就是您的最终解决方案,但是您必须检查Group[1]是否成功,因为现在如果模式找到一个带引号的字符串,那么它就成功了,但是捕获组Group[1]没有成功。

代码语言:javascript
运行
AI代码解释
复制
var regex = new Regex("\"(?:[^\",]*(,))+[^\"]*\"|\"[^\"]*\"");
var m = regex.Match("a,b,c");
if (m.Groups[1].Success)
{
    // Do your thing ;)
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7344464

复制
相关文章
用javascript替换URL中的参数值
今天遇到一个需要用javascript将url中的某些参数替换的需求,想起了不久前从司徒正美先生的博客中淘到了一个parseUrl函数,正好可以借此实现,代码整理如下: //分析url function parseURL(url) { var a = document.createElement('a'); a.href = url; return { source: url, protocol:
菩提树下的杨过
2018/01/22
3.3K0
R获取数值向量的分位数值
如果我们手上有一个数值向量,怎么用R去获取这个向量的各个分位数值呢?我们来看个具体的例子
生信交流平台
2022/09/21
1.1K0
R获取数值向量的分位数值
字符串中符号的替换---replace的用法
1 #include<iostream> 2 #include<string> 3 4 using namespace std; 5 6 int main() 7 { 8 string s1 = "one*two*three";//Given String 9 string s2 = "*";//delimeter 10 string s3 = ",";//string to replace 11
猿人谷
2018/01/17
3.7K0
字符串中符号的替换---replace的用法
2019-03-17 sublime中符号的替换 将回车符号换成想要的字符
⌘(command) + ⌥(option) + f find 中输入 ⌘(command)+⇧(shift) + ↩(enter) 在Rplace 中输入 想要替换的内容 点击Replace All
Albert陈凯
2019/03/20
1.6K0
2019-03-17 sublime中符号的替换 将回车符号换成想要的字符
六、变量数值计算符号和命令
可以进行小数、整数的运算,很好用 echo "7.7 9.8"|awk '{print ($1+$2),($1*$2)}'
jackxiao
2021/11/16
5980
PQ-批量“替换值”一次完成多个数值的“替换“
= List.ReplaceMatchingItems({1..10},{{1,"a"},{3,"c"}})
哆哆Excel
2022/10/31
2.2K0
07-Shell编程-数值运算符号使用
[root@node1 ~]# IPADDR=$(ifconfig eth0 | grep "inet" | awk '{print $2}')
DevOps云学堂
2019/10/18
7470
Python中的符号
1.算数运算符 2.复合赋值运算符 3.常用的格式符号
py3study
2020/01/10
2.7K0
白话解说,半分钟就懂 ---建模Matlab中符号运算和数值运算的区别?
两者的根本区别是 : 数值计算的表达式、矩阵变量中不允许有未定义的自由变量 , 而符号计算可以含有未定义的符号变量。对于一般的程序设计软件如 C, C + + 等语言实现数值计算还可以 , 但是实现符号计算并不是一件容易的事。而 Matlab 自带有符号工具箱 Symbolic Math Tooibox , 而且可以借助数学软件 Maple, 所以 Matlab 也具有强大的符号运算功能。
瑞新
2020/07/08
2.1K0
数值分析笔记(3)——数值计算中的原则
又位于分母,所以会导致误差变得非常大。要避免的另一方面的原因是,会导致有效数字位数大量减少,而我们要尽量保证有效数字多。
太阳影的社区
2021/10/15
4.7K0
为你的博客添加枫叶效果
之前从其他博客哪里搬了一个樱花落叶效果。但是我本人不是很喜欢那个樱花,而且那个樱花效果太密集太大了。很影响阅读体验,可以说是一个负优化。我这个人要求比较高,自然是很不满意这个效果,所以,我把代码稍微的改动了一下,达成了现在的效果。
小N同学
2022/03/01
4380
为你的博客添加枫叶效果
jQuery中$符号的实质
其实就是一个函数,以后用的时候,记得跟小括号 参数不同,功能就不同。3种用法: 参数是一个function, 入口函数 $(function () { }); $(domobj) 把dom对象转换成jquery对象 $(document).ready(function () { }); 参数是一个字符串,用来找对象 $("div") $("div ul") $(".current") 案例:检测$符号类型 <!DOCTYPE html> <html lang="zh-CN"> <h
兮动人
2021/06/11
3.8K0
jQuery中$符号的实质
Excel中$符号的妙用
Excel 使用过程中,不知道你有没有用到过 $ ,如果从来都没有用到过,可能代表你的修为还不够深,来看看为什么这么说。
披头
2019/12/26
2K0
php中的<?= ?>替换<?php echo ?>
首先修改PHP.ini文件. 如下: 1. 将short_open_tag = Off 改成On 开启以后可以使用PHP的短标签:<? ?> <?= 同时,只有开启这个才可以使用 <?= 以代替 <
全栈程序员站长
2021/12/23
3K0
php中的<?= ?>替换<?php echo ?>
Linux中符号的用法
用;号隔开每个命令, 每个命令按照从左到右的顺序,顺序执行, 彼此之间不关心是否失败, 所有命令都会执行。
头皮阴都都
2020/04/23
3.4K0
python中的@符号的作用
'@'符号用作函数修饰符是python2.4新增加的功能,修饰符必须出现在函数定义前一行,不允许和函数定义在同一行。也就是说@A def f(): 是非法的。只可以在模块或类定义层内对函数进行修饰,不允许修修饰一个类。一个修饰符就是一个函数,它将被修饰的函数做为参数,并返回修饰后的同名函数或其它可调用的东西。
py3study
2020/01/09
3.7K0
Python中的文本替换
对于习惯了Java中的replace,Python的replace用起来有些不适应,因为后者不支持直接使用正则表达式。要实现通过正则表达式的替换,可以配合Python的正则表达式模块使用。比如:
py3study
2020/01/10
4.7K0
JavaScript中的双符号运算
双波浪号 1 2 3 4 var i = 5.1; var j = 5.5; console.log(~~i); // 5 console.log(~~j); // 5 作用类似Math.floor。 类似的意思是在处理正数的时候,如果处理负数就它俩就不同了: 1 2 3 4 ~~-5.1 // 5 Math.floor(-5.1) // -6 ~~-5.5 // 5 Math.floor(-5.5) // -6 注: Math.ceil(x) Returns the smallest integer
前端黑板报
2018/01/29
1.4K0
shell脚本中$符号的意义
今天是远程办公的第4天,渐渐的找到了一点在家办公的节奏了,改了几个shell脚本,在改动过程中,发现还有一些知识点需要巩固,这里写出来,加深下印象。
AsiaYe
2020/02/17
4.4K0
shell脚本中$符号的意义
SAP中数值显示的问题
之前发现原来在输入框里面输入一串数值之后,系统会自动将数值变为分组形式的一串数字。比如输入123465798之后,系统自动转化为123.456.789。虽然这个并不影响实际运算,但看着很别扭!通过DDIC在用户里面设置了一下貌似也没啥用处。后来用新建的帐号登录,执行 su3 对一些信息进行修改,在登录信息里面数字格式改为:以句号作为小数点,以逗号分组。保存之后退出并重新启动GUI,搞定~
SAP梦心
2022/05/10
9200

相似问题

用数组中的符号替换数值

10

向量的SymPy替换符号

17

用向量替换符号变量

14

用数值替换Sympy索引符号

112

如何使用向量来替换链接的数值?

111
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

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

洞察 腾讯核心技术

剖析业界实践案例

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