需要正则表达式以字符串分隔下划线
我有字符串one_two_three_four
我需要一个正则表达式才能从上面的字符串中获取第二个字符串two
更多信息已添加:
我想要这个正则表达式,因为我有一个rdbms表,其中一列中的数据格式为'one_two_three_four',我只想在获取时从列中得到'两个'。使用以下查询。而是我再次获取数据并在java中分割数据。
select distinct(REGEXP_SUBSTR(column_name, 'regex'))
from table_name
答案 0 :(得分:1)
在Oracle中,您确实可以使用regexp_substr 或者将正常的substr与instr结合起来获得下划线的位置。
例如:
select
-- getting the 2nd match with non-underscore characters
regexp_substr(val, '[^_]+', 1, 2) as method1,
-- getting the (capture group)
regexp_substr(val, '^.*?_(.*?)_', 1, 1, null, 1) as method2,
-- substring on the positions of the underscores
substr(val,instr(val,'_')+1,instr(val,'_',1,2)-instr(val,'_')-1) as method3
from (
select 'one_two_three_four' as val from dual
) q
在像Java这样的编程语言中? 为什么正则表达式可以拆分?
String str = "one_two_three_four";
将字符串拆分为数组并取出元素1
String[] strArray = str.split("_");
String secondSplit = strArray[1];
或者一次性拍摄:
String secondSplit = str.split("_")[1];
顺便说一下,split也需要正则表达式。 所以这也适用:
String secondSplit = str.split("[_]")[1];