只需要匹配其中的1.0部分
时间: 2023-08-11 20:07:58 浏览: 47
如果你只需要匹配字符串中的 "1.0" 部分,可以在 REGEXP_SUBSTR 函数中使用正则表达式来提取。具体操作如下:
```
SELECT REGEXP_SUBSTR('CallableSchedule:[|CALLSCH| (Notice1:""20130205"" Notice2:""20130205"" FromDate:""20130208"" ToDate:""20130208"" PutCall:""C"" Strike:1.0 )(Notice1:""20140205"" Notice2:""20140205"" FromDate:""20140210"" ToDate:""20140210"" PutCall:""C"" Strike:1.0 )', 'Strike:([0-9]+\\.[0-9]+)') AS result FROM dual;
```
解析:
1. 使用 REGEXP_SUBSTR 函数获取以 'Strike:' 开头,后面跟着数字和小数点的字符串。
2. 在 SELECT 语句中使用 AS 子句将结果命名为 result。
执行以上 SQL 语句,得到的结果为:
```
1.0
```
正则表达式 'Strike:([0-9]+\\.[0-9]+)' 中的 ([0-9]+\.[0-9]+) 表示一个组,用来匹配数字和小数点。其中 [0-9]+ 表示至少一个数字,\\ 表示转义字符,用来匹配小数点。
相关问题
python 使用正则匹配把所有像1.0.988这种格式的替换为1-0-1-988
好的,可以使用 Python 的 `re` 模块来实现这个正则匹配和字符串替换。下面是一个示例代码:
```python
import re
# 定义正则表达式
pattern = r'(\d+)\.(\d+)\.(\d+)'
# 测试字符串
text = 'This is a test string, 1.0.988 is a version number.'
# 替换匹配的字符串
new_text = re.sub(pattern, r'\1-\2-\3', text)
# 输出结果
print(new_text)
```
输出结果为:
```
This is a test string, 1-0-988 is a version number.
```
解释一下代码:
1. 首先定义了一个正则表达式 `pattern`,它用括号将三个数字分组匹配。
2. 然后定义了一个测试字符串 `text`,里面包含了一个符合正则表达式的字符串 `1.0.988`。
3. 使用 `re.sub` 函数将匹配到的字符串替换为 `\1-\2-\3`,其中 `\1`、`\2`、`\3` 分别表示第 1、2、3 个分组匹配到的数字部分,用 `-` 符号拼接起来。
4. 最后输出新的字符串 `new_text`,结果为 `'This is a test string, 1-0-988 is a version number.'`。
希望这个示例对你有所帮助!
写一个正则表达式,校验[-1.0, 20, -3.0]
以下是一个可以校验该字符串的正则表达式:
```
^\[-?\d+(\.\d+)?(,\s?-?\d+(\.\d+)?)*\]$
```
解释:
- `^` 匹配字符串的开始位置
- `\[` 匹配左中括号
- `-?` 匹配可选的负号
- `\d+` 匹配一个或多个数字
- `(\.\d+)?` 匹配一个可选的小数部分,其中 `(\.\d+)` 匹配小数点和至少一个数字
- `(,\s?-?\d+(\.\d+)?)*` 匹配逗号分隔的数字列表,其中 `(,\s?` 匹配逗号和一个可选的空格,`-?\d+(\.\d+)?` 匹配一个数字(包括可选的小数部分),`*` 表示整个列表可以重复任意次数(包括零次)
- `\]` 匹配右中括号
- `$` 匹配字符串的结束位置
所以,该正则表达式会匹配形如 `[-1.0, 20, -3.0]` 的字符串,但不会匹配任何其他形式的字符串。