使用正则表达式忽略带有数字的字符串中的日期
Ignore date in a string with numbers using regular expression
我有个小问题。
我用[0-9\,.]*
在字符串中查找小数点。
然后 ([^\s]+)
找到第一个数字后面的文字。
字符串通常看起来像这样。 1 个数字文本和日期:
1.023,45 stück
24.05.10
但有时我只有日期,然后我变成了十进制的 240510。
有时我只有小数点。
我应该如何修改正则表达式以找到日期(如果存在)并将其删除?
然后寻找一个小数 select 这个如果存在的话。
提前致谢。
我建议以更严格的方式匹配数字(1-3 位数字,然后是 .
+ 3 digits
组(如果有),以及带数字的小数点分隔符,可选)。
(?s)(?<number>\d{1,3}(?:\.\d{3})*(?:,\d+)?)\s+(.*?)(?:$|\n|(?<date>\d{2}\.?`\d{2}\.?(?:\d{4}|\d{2})))
见demo
号码将保留在 ${number}
中,日期将保留在 ${date}
中。如果字符串以与日期非常相似的内容(6 或 8 位数字,带可选句点)开头,则不会被捕获。如果日期格式已知(例如,句点始终存在),请从 \.?
s.
中删除 ?
s
(?s)
开头会强制句点.
匹配一个新行(也许没有必要)。
分而治之
首先检查日期并从字符串中删除匹配项
([0-9]{1,2}\.){2}[0-9]{1,2}
使用原始正则表达式查找号码
[0-9\,.]*
如果你需要它找到数量的单位(假设你只会将它作为小写字母和 u 元音变音)
([a-zü]+)
有关处理正则表达式的一些有用信息和工具,请参阅 http://regexe.de/ (German) and http://www.regexr.com/(英语)。
我有个小问题。
我用[0-9\,.]*
在字符串中查找小数点。
然后 ([^\s]+)
找到第一个数字后面的文字。
字符串通常看起来像这样。 1 个数字文本和日期:
1.023,45 stück
24.05.10
但有时我只有日期,然后我变成了十进制的 240510。 有时我只有小数点。
我应该如何修改正则表达式以找到日期(如果存在)并将其删除? 然后寻找一个小数 select 这个如果存在的话。
提前致谢。
我建议以更严格的方式匹配数字(1-3 位数字,然后是 .
+ 3 digits
组(如果有),以及带数字的小数点分隔符,可选)。
(?s)(?<number>\d{1,3}(?:\.\d{3})*(?:,\d+)?)\s+(.*?)(?:$|\n|(?<date>\d{2}\.?`\d{2}\.?(?:\d{4}|\d{2})))
见demo
号码将保留在 ${number}
中,日期将保留在 ${date}
中。如果字符串以与日期非常相似的内容(6 或 8 位数字,带可选句点)开头,则不会被捕获。如果日期格式已知(例如,句点始终存在),请从 \.?
s.
?
s
(?s)
开头会强制句点.
匹配一个新行(也许没有必要)。
分而治之
首先检查日期并从字符串中删除匹配项
([0-9]{1,2}\.){2}[0-9]{1,2}
使用原始正则表达式查找号码
[0-9\,.]*
如果你需要它找到数量的单位(假设你只会将它作为小写字母和 u 元音变音)
([a-zü]+)
有关处理正则表达式的一些有用信息和工具,请参阅 http://regexe.de/ (German) and http://www.regexr.com/(英语)。