regex - 正则表达式在回车后匹配数字,中间有文本
问题描述
有没有办法在字符串中匹配这种模式?
模式(不区分大小写):"\bfactuur(nummer)" **OR** "Nr." **OR** "Nr(:)"
后跟实际值"\d+"
OR "d{3,4} - d{3,4}"
。
很高兴拥有(如果它实际上不是超现实的):"Factuur\n"
忽略中间的一切"Nr." "\d+"
。
测试:
Factuur: 2018-4005
Factuur
Nr. 90424571
Factuurnummer: 2019-010
factuur : 281319261
factuurnummer: 63
Factuurnummer: 281319264565
Factuur assdg 236373
Factuurnummer 281319265
Factuurnummer 0723 - 1345
Factuur nr. 180262
Factuurnummer : 6322232
演示正则表达式:
解决方案
您的正则表达式只需要进行两次更改即可使其适用于您的所有示例。你可以使用这个正则表达式,
\bfactuur(?:nummer|\n)?.*?(?<=\s)(\d+(?:\s*-\s*\d+)?)(?=\s|$)
这是我所做的两个更改,
- 如果 factuur 可以紧跟一个换行符,除了
nummer
,那么只需\n
替换nummer
- 增强
(\d+)
以(\d+(?:\s*-\s*\d+)?)
使其不仅可以匹配数字,还可以选择匹配一些可选的空格,然后是连字符,然后是一些可选的空格,最后跟一个数字,这就是我(?:\s*-\s*\d+)?
在后面添加的原因\d+
希望这能解决问题。如果您还有任何不匹配的样品,请告诉我。
编辑:用于捕获这样的字符串
Factuurnummer Factuurdate 1234 3-21-2019
可以使用此正则表达式增强该模式以捕获由空格或连字符分隔的多个数字,
\bfactuur(?:nummer|\n)?.*?(?<=\s)(\d+(?:\s*-?\s*\d+)*)(?=\s|$)
推荐阅读
- git - git stash 退出 0 但没有创建 stash
- python - 在 Python 3 中使用动态 SQL 语句
- javascript - TypeError: 无法注册 ServiceWorker: 获取脚本时收到错误的 HTTP 响应代码 (404)
- rebol - 红色:使用 do 向块添加动态键的任何替代方法
- c - fork() - 让父进程在不等待子进程的情况下工作
- postgresql - Postgres 用户未创建 Kubernetes
- linux - 如何使用 GCP 的 4.15 内核在 BPF 程序中检索当前任务的挂载命名空间?
- mysql - MySQL LEFT JOINS 命令,如何理解正确的算法
- python - 返回变量在 Python 中不起作用
- android - 带有 EditText 的 RecyclerView