- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我有一个以不同格式出现的字符串,如下所示:
UserId=1;IP Address=85.154.221.54;Device Type=Chrome57
Device Type=Chrome57;IP Address=85.154.221.54
Device Type=Chrome57
如果不匹配,如何提取 IP 地址并返回空字符串?
我尝试了以下方法,但如果没有匹配项,它会返回字符串本身。
select regexp_replace('Error=0;UserId=-1;IP Address=85.154.221.54;Device Type=Chrome57', '.*IP Address=(.+);.*', '\1') from dual;
最佳答案
您可以将 REGEXP_SUBSTR
与稍微改进的模式一起使用:
select regexp_substr('Error=0;UserId=-1;IP Address=85.154.221.54;Device Type=Chrome57',
'IP Address=([0-9.]+)',
1, 1, NULL, 1
)
from dual
在这里,
IP Address=
- 匹配 IP Address=
([0-9.]+)
- 将一个或多个数字或/和 匹配并捕获到第 1 组。
查看 online demo .如果没有匹配项,输出将为 NULL。
select regexp_substr('Error=0;UserId=-1;IP Address=85.154.221.54;Device Type=Chrome57',
'IP Address=([0-9.]+)',
1, 1, NULL, 1
) as Result
from dual
-- => 85.154.221.54
--select regexp_substr('Error=0;UserId=-1;IP Address= Device Type=Chrome57', 'IP Address=([0-9.]+)', 1, 1, NULL, 1) as result from dual
-- => NULL
请注意,REGEXP_SUBSTR
函数的最后一个 1
参数返回捕获组 #1 的内容(用模式的第一个括号部分捕获的文本)。
关于sql - Oracle regexp_substr - 从不同格式的字符串中提取子字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48075021/
我想用 PL/SQL 将分号分隔的字符串分成几个部分。只要字符串中没有圆括号,它就可以与 REGEXP_SUBSTR 一起正常工作。 示例: select REGEXP_SUBSTR('A;B;C',
我有一个文本作为 Revision:3336179e1ebaa646cf281b7fb9ff36d1b23ce710$ modified $RevDate:10-04-2017 11:43:47$ b
我想将此正则表达式模式复制到 regexp_substr。我想捕获第二组。 '(\?)(.*?)(&|$)' 我已经尝试过了 regexp(my_url, '\\?.*?&|$') 以及上面的一些类似
我想将此正则表达式模式复制到 regexp_substr。我想捕获第二组。 '(\?)(.*?)(&|$)' 我已经尝试过了 regexp(my_url, '\\?.*?&|$') 以及上面的一些类似
请看下面的正则表达式示例: https://regexr.com/4ek7r 如您所见,正则表达式运行良好,与产品说明中的尺寸(例如 3/16"等)相匹配。 我正在尝试使用 REGEXP_SUBSTR
我有一个名为 Website 的字段,其中包含如下示例: https://ivalore.com.br https://cornstalk.com https://penny.co 我正在尝试使用 R
我在一列中有以下示例值 Abc-123-xyz Def-456-uvw Ghi-879-rst-123 Jkl-abc 预期输出是用'-'分割的第三个元素,如果没有第三个元素,将检索最后一个元素。 请
我想使用 regexp_substr 提取包名称。 例如: create or replace package body something.pkg_test is 我要那个: pkg_test 我试
当执行下面的查询时,我得到“235”而不是预期结果“0” select REGEXP_SUBSTR(000.235||'', '[^.]+', 1, 1) from dual; 最佳答案 改为执行
我正在使用 Oracle 数据库,我正在尝试查找并提取与特定模式匹配的字符串中的所有匹配项... 应该是 3 个字母,3 个数字,然后可能是字母,也可能不是 我试过这个: SELECT REGEXP_
我有一个带有 varchar 列的表,其中的数据如下: " ea 35 3.15 " 我需要能够提取 valorTasa 标记之间的值,但不
我有一个名为 data_column 的列,它有一些值,例如“123123,12,123123”。我想计算按第二个分组的行数。 但是当我运行 select count(*) from table gr
我有一个以这种格式出现的字符串 Transaction 'pqr_111_xyz_222(Aaaa Bbbb Cccc - 3333)' failed due to connection error
我有一个以不同格式出现的字符串,如下所示: UserId=1;IP Address=85.154.221.54;Device Type=Chrome57 Device Type=Chrome57;IP
我正在尝试使用 Oracle 12c regexp_substr 从字符串中提取一个单词,但没有理解它是如何工作的,网络中的信息太多,我感到困惑。 所以我想提取tmp*字符串中的表:query_str
我想从表格的字符串列中提取一个词。 description =========================== abc order_id: 2 xxxx yyy aa mmm order_id:
我想从表格的字符串列中提取一个词。 description =========================== abc order_id: 2 xxxx yyy aa mmm order_id:
我正在尝试使用 regexp_subtr 拆分字符串,但我无法使其工作。 所以,首先,我有这个查询 select regexp_substr('Helloworld - test!' ,'[[:spa
我试图从逗号分隔的列表中返回字符串列表。但是,我仍然想在字符串中返回逗号,它们出现在双引号之间。 这是我目前的声明: SELECT regexp_substr('one,two,"three, f
我有 A.FIELD 输出以下格式: 9:30AM - 12:50PM AbCdEfGhIj XY-000 我正在尝试找出一种方法来根据指定的分隔符获取每个单独的值。 第一个 之前的所有整数:(例如:
我是一名优秀的程序员,十分优秀!