【问题标题】:Regular Expression how to print one of two in matching pattern正则表达式如何打印匹配模式中的两个之一
【发布时间】:2012-06-24 13:04:51
【问题描述】:

我对正则表达式有疑问。 我正在编写一个与 mt940 银行对账单文件中的一行匹配的小程序。 我有一个像这样的简单字符串:

:60F:C120613PLN245265,82

还有一个正则表达式:

([C|D]{1})|([0-9]{6})|([A-Z]{3})|([0-9]+(\,[0-9]{2}))

我回来了

C
120613
PLN
143783 
4,82

但最后两行是分开的,我会收回没有分开的最后两行,像这样:

C
120613
PLN
1437834,82

我认为,最后一行在“,”之前有 6 个数字,这与我的整个模式中的第二个模式匹配。

我能做些什么来恢复最后两个单词没有分开?

【问题讨论】:

  • 哪种语言/正则表达式种类?

标签: pattern-matching mt940


【解决方案1】:

这种模式适合我:

pattern "([C|D]{1})([0-9]{6})([A-Z]{3})([0-9]+,[0-9]{2})"

我已经在 Python 中对其进行了测试:

re.findall(pattern, ":60F:C120613PLN245265,82") // [('C', '120613', 'PLN', '245265,82')]

【讨论】:

  • 感谢您的快速答复。在python中没有“|”夏尔,你是对的。但是在C#中是一个问题。我用其他方式来解决问题:我使用了一个选项“RightToLeft”,它现在可以工作了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-19
  • 2011-07-29
  • 1970-01-01
  • 2022-11-02
  • 2015-02-24
  • 1970-01-01
相关资源
最近更新 更多