我正在从事一个分析食品的项目。使用 VB.net、C# 和使用 MS SQL Server 数据库进行编程。
我现在需要在成分文本字段中找到每次出现的“E 编号”。 (E 数字是食品添加剂的欧洲标准编码系统,se Wikipedia here)。
E 数字具有以下格式:
- 大写字母“E”(1 个字符)。
- 一个可选的[空格](0 - 1 个字符)。
- 100 到 1600 之间的三位或四位数字(3 - 4 个字符)。
- “a”到“f”(0 - 1 个字符)范围内的可选 smallCAP 字母。
使其总共有 4 到 7 个字符的长度。
*数字通常用括号括起来和/或立即与成分名称连接,然后(可能)在其前后不留任何空格或分隔符。
示例:E100、甲醛(E 240)、E300b、E 1234a、(E1321)。
我需要返回文本中的所有 E 编号(如上格式)。可以有很多。
有什么想法吗?
- 从来没有抽出时间正确学习 RegExp,因此出现了这个问题。
最佳答案
您可以使用正则表达式模式 E ?\d{3,4}[a-f]?
请参阅 online demo .
E ?
- 必须以 E 开头,后跟可选空格(?
使前面的空格可选)。\d{3,4}
- 接下来的三四个字符必须是数字[a-f]?
- 最后一个字符可以是 a 和 f 之间的任意字母
您可以像这样搜索所有匹配项:
foreach (Match m in Regex.Matches(input, pattern))
Console.WriteLine(m.Value);
关于c# - 在食物成分文本中查找 "E numbers"的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35026411/