-
2021-03-01 09:04:06
保罗,复活了这个问题,因为它有一个未提及的简单解决方案。(在进行正则表达式赏金任务研究时发现了您的问题。)
此外,现有解决方案还会检查逗号后是否没有括号,但这并不能保证它会嵌入括号中。
正则表达式非常简单:\(.*?\)|(,)
交替的左侧与完整的括号匹配。我们将忽略这些匹配。右侧匹配并捕获到组1的逗号,我们知道它们是右侧的逗号,因为它们与左侧的表达式不匹配。
在此演示中,您可以在右下方窗格中看到“组1”捕获。
您说过要匹配逗号,但是可以使用相同的一般想法来拆分或替换。
为了匹配逗号,您需要检查Group1。此完整程序的唯一目标就是做到这一点。import java.util.*;import java.io.*;import java.util.regex.*;import java.util.List;class Program {public static void main (String[] args) throws java.lang.Exception {String subject = "12,44,foo,bar,(23,45,200),6";Pattern regex = Pattern.compile("\\(.*?\\)|(,)");Matcher regexMatcher = regex.matcher(subject);List group1Caps = new ArrayList();// put Group 1 captures in a listwhile (regexMatcher.find()) {if(regexMatcher.group(1) != null) {group1Caps.add(regexMatcher.group(1));}} // end of building the list// What are all the matches?System.out.println("\n" + "*** Matches ***");if(group1Caps.size()>0) {for (String match : group1Caps) System.out.println(match);}} // end main} // end Program
这是一个现场演示
要使用相同的技术进行拆分或替换,请参见参考资料中的代码示例。
参考
更多相关内容 -
以逗号分割,但是不包含括号内的逗号的正则表达式
2020-09-06 22:57:35,表示匹配逗号 [^()]*表示除过左括号和右括号的所有字符重复零次或多次; ![^()]*+\)表示除过左括号和右括号的所有字符重复零次或多次,然后最后一个字符是右括号…………式1) 如下图: ,(?![^()]*+\))表示...首先正则表达式是:
(?<!\\([^)]*),(?![^(]*\\))
接下来我们来显示解释:
,表示匹配逗号
[^()]*表示除过左括号和右括号的所有字符重复零次或多次;
![^()]*+\)表示除过左括号和右括号的所有字符重复零次或多次,然后最后一个字符是右括号…………式1)
如下图:
,(?![^()]*+\))表示逗号之后不能是式1)pattern所匹配的字符串。
如下图,我们用它类分割1,23,test,(1,2,3):
注意,这个正则表达式不支持括号的嵌套
-
金额的每三位一个逗号的正则解法
2020-06-03 17:01:56在商城页面中我们经常会遇到需要每三位用逗号表示的时候,这时,用原生的js解决不够方便,此时可以使用正则表达式来进行快速替换 function transform (num){ return num.toString().replace(/\B(?=(\d{3})+$)/g, ",...在商城页面中我们经常会遇到需要每三位用逗号表示的时候,这时,用原生的js解决不够方便,此时可以使用正则表达式来进行快速替换
function transform (num){ return num.toString().replace(/\B(?=(\d{3})+$)/g, ",") } transform(10033434) //10,033,434
但遇到非整数的情况下例如
transform(53526.333) // 53526.333
并不会发生转换,这是因为正则中的$符号表示的是匹配字符串的末尾,此时分两种情况考虑,用indexOf找到 ‘,’ , 在做相应变化,改善后的代码如下
function thousands2(num){ var str = num.toString(); var reg = str.indexOf(".") > -1 ? /\B(?=(\d{3})+\.)/g : /\B(?=(\d{3})+$)/g; return str.replace(reg,","); } thousands2(-1234567.1234567)//-1,234,567.1234567 thousands2(2232.33) //2,232.33
这样就能解决常用的千位制的转换啦!
-
MySql 查询以逗号分隔的字符串的方法(正则)
2021-02-06 11:48:31现数据库表中某个字段保存的值为“01,07,08”,须要sql去查询下表中到相应的名称:一、使用find_in_set()...查询字段中包含01,07,08的记录:javaSELECT*FROMtestWHEREfind_in_set('01',itemname)ORfind_in_set('07...现数据库表中某个字段保存的值为“01,07,08”,须要sql去查询下表中到相应的名称:
一、使用find_in_set()...
查询字段中包含01,07,08的记录:java
SELECT * FROM test WHERE find_in_set('01',itemname) OR find_in_set('07',itemname);
这SQL,肿么给它拆分开呢,难道再循环一下....linux
二、正则表达式,完美解决:正则表达式
SELECT * FROM test WHERE itemname REGEXP '(01|07|08)';
SELECT * FROM test WHERE CONCAT(',',itemname,',') REGEXP '[^0-9]+(3|9)[^0-9]+';
这个查询出来是多条数据的,而后再用到了group_concat()函数,OKsql
项目中就这么写的:数据库
SELECT
group_concat(itemname)
FROM
code_library
WHERE
codeno = 'Com_insurance'
AND itemno REGEXP (
SELECT
REPLACE (Species, ',', '|')
FROM
capital_info
WHERE
customerid = '2016011800000001'
)
参考:api
MYSQL中利用select查询某字段中包含以逗号分隔的字符串的记录方法
http://my.oschina.net/wallenheng/blog/402246函数
MySql 查询以逗号分隔的字符串的方法(正则)
ui
http://blog.csdn.net/hechurui/article/details/50550468
spa
MySQL模糊查询:LIKE模式和REGEXP模式.net
http://www.linuxidc.com/Linux/2015-03/114580.htm
-
正则匹配含有逗号的文章总数
2018-10-18 21:38:19但是小于等于三位数时没有逗号,因此在写爬虫用正则解析文章数量时出现了这个问题,刚开始没有认真思考----现在记录一下。 1,第一次遇到的: Showing 1–200 of 3,129 results 正则表达式为:\d+,\d+ (\d表示... -
java – 接受逗号或分号分隔值的正则表达式模式
2021-02-12 17:51:22最简单的形式:^\w+(,\w+)*$I need to restrict only...使用正则表达式(包括示例unicode字符范围):^[\u0400-\u04FFa-zA-Z ]+(,[\u0400-\u04FFa-zA-Z ]+)*$用法示例:public static void main (String[] args) throw... -
php – 正则表达式只允许使用字母数字,逗号,连字符,下划线和分号
2021-03-23 11:52:04如果它不是az,AZ,0-9,逗号,分号,下划线或连字符(最终应该表示单个用户名或逗号/分号分隔),我使用PHP替换字符串中的任何内容用户名列表)。以下作品:$data = preg_replace('/[^,;a-zA-Z0-9_-]/s', '', $data);... -
正则表达式 千分位分隔符(金额每3位添加逗号)
2022-03-30 21:57:181.金额每3位添加逗号 //这里使用两种方式,使用一种删除第二种即可 function thousand(num) { // 思想1. 找见第一个数字后面成3倍数的数字,然后把这些匹配的数字转换成 “数字,”的形式,就可以完成千分位表示 //... -
Python中利用正则表达式用逗号分割数据,但是忽略引号中的逗号的方法
2018-10-15 11:09:19前言:本博客中我们将对我们使用的数据进行说明,对使用到的正则表达式进行逐个字符的解释,并且给出进一步详细学习正则表达式的资料。 一.问题描述: 我在做一个网站搜索记录的分割工作,原始数据如下: x= '{"娇妻... -
正则_input输入框只能输入数字和英文逗号
2018-05-25 10:07:34onkeyup="this.value=this.value.replace(/[^\d\,]/g,'')" -
正则表达式 | 整数以千分位逗号分隔
2022-04-22 21:55:10自右向左,每三位增加一个逗号。 表达式:/(?=(a{3})+($))/g (不完美) (?=..) 正向零度断言,表示匹配该子表达式前面的项。 (\d{3})+ 表示匹配3个数字视为一个分组。 +表示整数倍(匹配连续3个数字、6个数字、9... -
js使用正则将金额格式化(逗号隔开)
2021-08-03 15:00:02+:与前面的\d{3}结合表示匹配3的整数倍个数字字符 $:字符串结尾 所以合起来的意思就是:匹配单词中的某个位置,这个位置之后的字符全部为数字,且出现次数是3的整数倍。 function format(val){ var str = val.... -
关键字空格替换为逗号的js代码 原创</font>
2020-10-30 04:18:00个功能主要是方便我们在发布文章时填写关键字的时候,不用切换为英文状态输入逗号,他可以将中文逗号和空格统一转换为英文逗号,提高工作效率。 -
java中,正则表达式匹配逗号怎么写?
2016-06-16 07:28:57输入的一个字符,需要校验一下 ,这个字符串里面,有没有含有逗号,这个应该怎么写?找个很久,没有找到,麻烦知道的大神,回来一下,中英文的最好都有,谢谢。 -
正则:数字整数部分每隔三位加一个逗号,小数部分保持不变
2021-02-23 16:40:08以1234564894.256为例给出答案(方便下文讲解),读者可以自行封装成通用的 String(12345678.321).replace(/(?<!\.\d*)\B((?=(\d{3})+(?!\d)))/,',') 答案解析 ....\d*)表示间隙前面不能是.或 -
js正则表达式替换字符串两端的空格_逗号或其它任何符号
2021-06-12 19:11:08有一个问题是,如果字符串两端是一个或多个逗号,有可能只有一端有逗号,这种情况该怎么用正则表达式来解决呢?下面我列举几种情况,例如将下面这些字符的两端符号去除掉,该怎么搞定?情况一:1:“hello ” //右边... -
js 正则表达式 匹配除汉字,字母,数字,逗号,句号外的特殊字符(用来规范输入内容)
2018-11-26 17:13:16/[^\u4e00-\u9fa5a-zA-Z\d,\.,。]+/ 其中\u4e00-\u9fa5匹配汉字,a-zA-Z匹配字母,\d匹配数字,,.,。匹配逗号和句号,^表示非,+表示尽可能多的匹配。 -
JS使用正则截取两个字符串之间的字符串实现方法详解
2020-11-30 05:42:46本文实例讲述了JS使用正则截取两个字符串之间的字符串方法。分享给大家供大家参考,具体如下: 一个最常用的场景 截取两个字符串中间的字符串 var str = "iid0000ffr"; var substr = str.match(/id(\S*)ff/); alert... -
Java中怎么用正则表达式来表示小数 比如:3.14怎么用正则表达式来表示。
2018-07-25 15:36:2623 8.1到3个数字,后面跟着任意个 逗号+3个数字,逗号成为可选,而不是必须:^([0-9]+|[0-9]{1,3}(,[0-9]{3})*)(.[0-9]{1,2})?$ 24 备注:这就是最终结果了,别忘了"+"可以用"*"替代如果你觉得空字符串也可以接受的话... -
两位小数正则表达式;金额、金钱三位逗号形式展示
2015-04-24 15:16:031、两位小数正则表达式 <script type="text/javascript"> var reg=/^(([1-9]{1}\d*)|0)(\.\d{1,2})?$/; var str="101.36";//可以自己更换这个字符串的值进行所有可能的测试 ... -
正则表达式匹配中文汉字、标点符号(有示例!有示例!)
2019-07-12 11:16:37注意:不要忘记后缀/u,表示Unicode编码,否则将按照常规匹配规则。 补充: Unicode 编码并不只是为某个字符简单定义了一个编码,而且还将其进行了归类。 \pP 其中的小写 p 是 property 的意思,表示 Unicode 属性... -
【Pushgateway】正则匹配,分隔逗号成数组
2020-11-23 16:08:54job=‘pushgateway’,buildtime=‘2018-12-14 16:... 解析: \w+:匹配字母或数字或下划线 重复一次或多次 \s*: 任意空白字符 0次或多次 (): 匹配单引号中内容,把可能存在的情况写入到[]中 []: 表示匹配具体规则的字符 -
js 正则验证多个ip地址并用逗号分隔
2018-07-09 17:49:02//检测多个ip地址用逗号分隔 function checkIpv6(ip) { var reg = /^(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\... -
正则表达式 多个手机号之间使用英文逗号分隔
2021-05-16 15:12:33推荐文章转载请出自出处:http://eksliang.iteye.com/blog/1976579首先得明白二者是截然不同的通配符只能用在shell命令中,用来处理字符串的的匹配。判断一个命令是否为bash shell(linux 默认的shell)的内置命令type ... -
中文字符和中文标点符号的正则表达式
2020-10-06 10:12:41匹配中文标点符号: [\u3002\uff1b\uff0c\uff1a\u201c\...匹配中文字符的正则表达式: [\u4e00-\u9fa5] JavaScript正则表达式在线测试工具: http://tools.jb51.net/regex/javascript 正则表达式在线生成工具: http:// -
JS正则表达式可以为空但不可以输入特殊字符可以输入逗号(自用)
2019-03-01 08:58:49在写备注或者说明输入框的时候,一般都要求不能有特殊字符,但是可以有逗号,可以输入汉字、字母、数字逗号。...(^[\u4E00-\u9FA5a-zA-Z0-9,,]{1,250}$) //表示可以输入1-250个字的数字、汉字、字母、逗号 ... -
jquery正则判断字符串有几个逗号
2016-01-14 12:11:00var angelweb="我,你,ta,";var re=/[,,]/g;if(re.test(angelweb)){ var n=angelweb.match(re).length; alert("字符串中包含"+n+"个逗号!"); } 转载于:https://www.cnblogs.com/xsj1989/p/5129761.html... -
Oracle通过正则表达式分割字符串 REGEXP_SUBSTR
2021-05-08 02:04:12REGEXP_SUBSTR函数格式如下:function REGEXP_SUBSTR(string, pattern, position, occurrence, modifier)string :需要进行正则处理的字符串pattern :进行匹配的正则表达式position :起始位置,从第几个字符开始... -
JS 正则表达式解题:用科学计数法表示数字
2020-05-02 23:25:48正则表达式用来匹配特殊字符,在此题中可以考虑:从字符串的末位开始,每当位数是三的倍数,则添加一个逗号。 思路: 从字符串末位开始匹配 --> 以$结尾表示匹配输入结束前的位置 var reg =/...$/ 位数为3的...