Java 只有数字,字母,下划线,横杆,英文逗号的正则表达式
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java 只有数字,字母,下划线,横杆,英文逗号的正则表达式相关的知识,希望对你有一定的参考价值。
如果不是数字,字母,下划线,横杠,英文逗号,则过滤成空串
参考技术A System.out.println("12hh_-,。,".replaceAll("[^0-9A-Za-z_\\-,]", "A"));本回答被提问者采纳正则表达式 - 在逗号之间的序列中捕获下划线之间的数字
【中文标题】正则表达式 - 在逗号之间的序列中捕获下划线之间的数字【英文标题】:Regular expression - capture number between underscores within a sequence between commas 【发布时间】:2020-01-15 12:57:10 【问题描述】:我在数据库表中有一个字段,格式为:
111_2222_33333,222_444_3,aaa_bbb_ccc
这是整个字段统一的格式。三个下划线分隔的数值,一个逗号,另外三个下划线分隔的数值,另一个逗号,然后是三个下划线分隔的文本值。中间没有空格
我想从第二个数字序列中提取中间值,在上面的例子中我想得到 444
在我继承的 SQL 查询中,使用的正则表达式是 ^.,(\d+)_.$
,但这似乎没有任何作用。
我尝试识别第一个逗号、后面的第一个数字和以下下划线 ,222_
用作起点,然后从那里得到下一个数字,后面没有 _
这个(,\d*_)(\d+[^_])
选择,222_444
是我得到的最接近的
【问题讨论】:
用您正在使用的数据库标记我们的问题。 您需要使用数据库进行标记是因为每个数据库都有非常不同的字符串和正则表达式 API。 如果你能够得到 ,222_444 ,只需删除第一组的第一个圆括号,你应该根据需要用 444 进行四舍五入 ,\d*(\d+[^]) 【参考方案1】:我们可以尝试将REGEXP_REPLACE
与捕获组一起使用:
SELECT
REGEXP_REPLACE(
'111_2222_33333,222_444_3,aaa_bbb_ccc',
'^[^,]+,[^_]+_(.*?)_[^_]+,.*$',
'\1') AS num
FROM yourTable;
这是一个演示,显示上述正则表达式的第一个捕获组包含您想要的数量。
Demo
【讨论】:
以上是关于Java 只有数字,字母,下划线,横杆,英文逗号的正则表达式的主要内容,如果未能解决你的问题,请参考以下文章
java验证,”支持6-20个字母数字下划线或减号,以字母开头“这个的正则表达式怎么写?
6至20位之间,必须以字母开头,且至少包含一个数字或下划线!!!!的JAVA 正则怎样写?