regex - 如何使用正则表达式识别字符串中的十进制值
问题描述
我有以下内容SHAKE LQ 1.30 ML (60 MG) PO QD FOR 7 DAYS THEN DR
并试图仅识别30 ML
.
我尝试了以下方法,但捕获30
了1.30 ML
.
((30|45|60)(\s)?(ML))
我怎么能不捕获十进制值的整数组合。
解决方案
小数是:
\d+\.\d{2}\s
解释:
\d number
+ one or more preceding character
\. literal dot
{2} exactly two preceding characters
\s white space
编辑。非小数是:
[^.]\d{2}\s
JavaScript 中的示例:
s1='SHAKE LQ 30 ML (60 MG) PO QD FOR 7 DAYS THEN DR';
s2='SHAKE LQ 1.30 ML (60 MG) PO QD FOR 7 DAYS THEN DR';
r=/[^.]\d{2}\s+ML/
console.log(r.exec(s1)); //returns 30ML in array
console.log(r.exec(s2)); //returns null
推荐阅读
- angular - 角度路由 - 在根路由级别激活默认子路由
- single-sign-on - 为什么在设置基于 SAML 的 SSO 时需要 IdP 证书指纹
- amazon-web-services - 基于 SQS ApproximateNumberOfMessagesVisible 自动扩展 Fargate 服务
- python - Pandas 系列追加返回 NaN 值
- r - SpaatioTemporal 包错误:“'LUR.in' 的长度与时间趋势的数量不匹配。”
- android - 从 Kotlin 和 okhttp 中的函数检索变量结果
- reactjs - JSX 映射对象的动态数组以显示 MDL 菜单
- reactjs - 对于带有 React Router 的样式化组件,子组件没有 props.theme
- python - Odoo - 确认销售订单
- r - 无法执行 C50 算法