正则表达式的困境
Regular expression woes
我有以下数据,我想将其转换为正则表达式。
PALMKERNEL OIL Mal/dlrs吨cif鹿特丹
12月15日/1月16日890.00
1月16日/2月16日900.00+10.00
我下面的代码似乎不起作用。首先,我如何确定890之后,可能什么都没有,也可能有+10.00或任何数字?我试着用?:但有时它会完全忽略我试图捕捉的月份信息。。在这种情况下,我不想捕捉+10.00或890或900价格后的任何字符。
(棕榈油Mal\b)/(Indo-dlrs吨cif Rotterdam\b)\s*([^\s]+)\s*
对于包含日期和价格的部分,此正则表达式处理示例字符串中的两个变体。
Pattern pat = Pattern.compile(
"\w{3}\d{1,2}/\w{3}\d{1,2}" +
"\s*(\d+\.\d\d)(\s+\+\d+\.\d\d)?" );
String s1 = "Dec15/Jan16 890.00";
String s2 = "Jan16/Feb16 900.00 +10.00";
Matcher m1 = pat.matcher( s1 );
if( m1.matches() )
System.out.println("m1 " + m1.group(1) + ":" + m1.group(2) );
Matcher m2 = pat.matcher( s2 );
if( m2.matches() )
System.out.println("m2 " + m2.group(1) + ":" + m2.group(2) );
输出:
m1 890.00:null
m2 900.00: +10.00
没有足够的信息-所以我不知道/+10.00/?中的第三种选择?。
相关文章:
- 使用正则表达式regex_search在字符串中查找字符串
- 在 C++ 中使用正则表达式错误时出现问题 括号表达式中的范围无效
- C++正则表达式无限循环
- FindPackageHandleStandardArgs.cmake:137 的 CMake 错误(消息):找不到 Boost (缺少:正则表达式)(找到合适的版本"1.72.0",
- 定义有趣的宏和正则表达式在Z3 C++绑定
- 带有多个字符分隔符的正则表达式
- C++ 使用增强正则表达式库时断言崩溃
- 有人可以帮助我处理正则表达式吗?
- 使用正则表达式获取大括号块的列表
- 正则表达式以匹配数字的重复模式,后跟任何类型的分隔符?
- 组合正则表达式部分使用 | 不起作用的 C++
- 为什么C++正则表达式这么慢?
- 如何使HTML5电子邮件验证正则表达式在C++中工作?
- 在C++中实现正则表达式
- C++正则表达式替换整个单词
- 用C++编写正则表达式的正确方法是什么?
- 如何从Stroustrup的C++书中解释这个正则表达式?
- 为什么这个正则表达式C++在括号表达式中抛出无效范围异常?
- C++:匹配正则表达式,什么是匹配?
- 正则表达式的困境