正则表达式使瑞典货币标准化

时间:2018-07-30 09:14:15

标签: c# .net regex localization

我目前正在c#引擎上进行正则表达式,目的是从包含瑞典货币的XML中剥离货币字母。

XML文档中可能出现的所有可能值的版本如下:

Value="-0.00SEK" Value="-5.60SEK" Value="SEK5.60" Value="5.60"

请注意,如果数字为负数,则将在末尾附加货币字母。

我已经构建了这个正则表达式 Value="((A-Z{1,3})?|(\-)?)(\d*\.\d*)(\D{1,3})?"

替换为值Value=\"$1$4\"

输出以下内容:

Value="-0.00" Value="-5.60" Value="SEK5.60" Value="5.60"

负数案例效果很好,但是我不知道为什么/如何做正数案例,因为它一开始仍然在打印SEK。我正在尝试删除它,因此它只显示为5.60

上个月:http://rextester.com/PYTKG15831

任何帮助将不胜感激!

谢谢。

2 个答案:

答案 0 :(得分:0)

您可以使用RegEx Value="[A-Z]{0,3}(-?\d+(?:\.\d+)?)[A-Z]{0,3}"

替换为Value=\"$1\"

  • Value="偶尔与Value="匹配

  • [A-Z]{0,3}允许在价格前使用三个大写字母

  • (-?\d+(?:\.\d+)?)捕获您的价格(不带-的价格)

  • [A-Z]{0,3}允许在您的价格后加上三个大写字母

  • "与地域"匹配

Demo.

答案 1 :(得分:0)

您还可以使用(?<=后面的两个正向后缀|来匹配3个大写字符并替换为空字符串:

(?<=Value="\-?\d+\.\d+)[A-Z]{3}(?=")|(?<=Value=")(?:[A-Z]{3})(?=\d+\.\d+")

  • (?<=Value="\-?\d+\.\d+)[A-Z]{3}(?=")断言左侧是例如Value="-0.00,然后匹配3个大写字符并断言右侧是"
  • |
  • (?<=Value=")(?:[A-Z]{3})(?=\d+\.\d+")断言左边是例如Value=",匹配3个大写字符,并断言后面是5.60"

Test