我目前正在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
任何帮助将不胜感激!
谢谢。
答案 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}
允许在您的价格后加上三个大写字母
"
与地域"
匹配
答案 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"