正则表达式从变量中提取 2 个文本
Reg Ex to extract 2 texts from a variable
我需要 2 个单独的正则表达式(.net、c#)来提取值。我不能使用分组。只需要 2 个单独的正则表达式。我试过这个 (?:^|(?:[.!?]\s))(\w+)
但它给了我 6;. Supplier
例如
6. Supplier - Compressors, Drivers & Refrig. Units
第一个正则表达式会给我 Supplier
第二个正则表达式会给我 Compressors, Drivers & Refrig. Units
示例变量是(在我的场景中它们不是这样在一起的)。它们是单独的实例。我需要分离 Regex 的原因是为了在代码中的不同位置评估这个值。
4. Cost/Estimating
6. Supplier - Minor Material: Specialty
6. Supplier - Pressure Vessels & Filters
6. Supplier - Pumps
6. Supplier - Minor Material: Valves
6. Supplier - Minor Material: Specialty
6. Supplier - Other Major Equipment
7. Manufacturing
8. Project Management
9. Order Release (OTR) - Commercial Documents
9. Order Release (OTR) - Hand-Off
您可以将一个正则表达式用于分组:
string myString = "6. Supplier - Minor Material: Specialty";
var regexPattern = @"(?<number>\d+)\.\s(?<supplier>\w+)\s-\s(?<product>.+)";
var matched = Regex.Match(myString, regexPattern);
if (matched.Success)
{
var supplier = matched.Groups["supplier"].Value;
var product = matched.Groups["product"].Value;
}
根据您对 Nintex 的要求,您可以尝试以下两个正则表达式,尽管它们远非理想:
匹配数字后的第一个单词(先行和后行):
(?<=\d\.\s).+(?=\s-\s)
匹配破折号后的单词 -(后视)
(?<=\s-\s).+
代码
^\d+\.[ \t]*([^-\r\n]+?)(?:$|[ \t]*-[ \t]*(.*))
结果
输入
4. Cost/Estimating
6. Supplier - Minor Material: Specialty
6. Supplier - Pressure Vessels & Filters
6. Supplier - Pumps
6. Supplier - Minor Material: Valves
6. Supplier - Minor Material: Specialty
6. Supplier - Other Major Equipment
7. Manufacturing
8. Project Management
9. Order Release (OTR) - Commercial Documents
9. Order Release (OTR) - Hand-Off
6. Supplier - Compressors, Drivers & Refrig. Units
输出
下面的输出显示捕获组 1 由可选的捕获组 2 分隔。每个完整的匹配项由一个新行分隔。
Cost/Estimating
Supplier
Minor Material: Specialty
Supplier
Pressure Vessels & Filters
Supplier
Pumps
Supplier
Minor Material: Valves
Supplier
Minor Material: Specialty
Supplier
Other Major Equipment
Manufacturing
Project Management
Order Release (OTR)
Commercial Documents
Order Release (OTR)
Hand-Off
Supplier
Compressors, Drivers & Refrig. Units
说明
标志 g
(全局 - 不要在第一次匹配时停止)和 m
(多行 - ^
匹配每行的开头并且 $
匹配每行的末尾)被使用。
^
在行首声明位置
\d+
匹配一位或多位数字
\.
字面上匹配点字符.
[ \t]*
匹配任意数量的空格或制表符
([^-\r\n]+?)
捕获集合 -\r\n
中不存在但尽可能少的一个或多个字符到捕获组 1
(?:$|[ \t]*-[ \t]*(.*))
匹配以下任意一项
$
断言行尾的位置
[ \t]*
匹配任意数量的空格或制表符
-
字面上匹配连字符-
[ \t]*
匹配任意数量的空格或制表符
(.*)
捕获任意次数的任意字符(行终止符除外)到捕获组 2
我需要 2 个单独的正则表达式(.net、c#)来提取值。我不能使用分组。只需要 2 个单独的正则表达式。我试过这个 (?:^|(?:[.!?]\s))(\w+)
但它给了我 6;. Supplier
例如
6. Supplier - Compressors, Drivers & Refrig. Units
第一个正则表达式会给我 Supplier
第二个正则表达式会给我 Compressors, Drivers & Refrig. Units
示例变量是(在我的场景中它们不是这样在一起的)。它们是单独的实例。我需要分离 Regex 的原因是为了在代码中的不同位置评估这个值。
4. Cost/Estimating
6. Supplier - Minor Material: Specialty
6. Supplier - Pressure Vessels & Filters
6. Supplier - Pumps
6. Supplier - Minor Material: Valves
6. Supplier - Minor Material: Specialty
6. Supplier - Other Major Equipment
7. Manufacturing
8. Project Management
9. Order Release (OTR) - Commercial Documents
9. Order Release (OTR) - Hand-Off
您可以将一个正则表达式用于分组:
string myString = "6. Supplier - Minor Material: Specialty";
var regexPattern = @"(?<number>\d+)\.\s(?<supplier>\w+)\s-\s(?<product>.+)";
var matched = Regex.Match(myString, regexPattern);
if (matched.Success)
{
var supplier = matched.Groups["supplier"].Value;
var product = matched.Groups["product"].Value;
}
根据您对 Nintex 的要求,您可以尝试以下两个正则表达式,尽管它们远非理想:
匹配数字后的第一个单词(先行和后行):
(?<=\d\.\s).+(?=\s-\s)
匹配破折号后的单词 -(后视)
(?<=\s-\s).+
代码
^\d+\.[ \t]*([^-\r\n]+?)(?:$|[ \t]*-[ \t]*(.*))
结果
输入
4. Cost/Estimating
6. Supplier - Minor Material: Specialty
6. Supplier - Pressure Vessels & Filters
6. Supplier - Pumps
6. Supplier - Minor Material: Valves
6. Supplier - Minor Material: Specialty
6. Supplier - Other Major Equipment
7. Manufacturing
8. Project Management
9. Order Release (OTR) - Commercial Documents
9. Order Release (OTR) - Hand-Off
6. Supplier - Compressors, Drivers & Refrig. Units
输出
下面的输出显示捕获组 1 由可选的捕获组 2 分隔。每个完整的匹配项由一个新行分隔。
Cost/Estimating
Supplier
Minor Material: Specialty
Supplier
Pressure Vessels & Filters
Supplier
Pumps
Supplier
Minor Material: Valves
Supplier
Minor Material: Specialty
Supplier
Other Major Equipment
Manufacturing
Project Management
Order Release (OTR)
Commercial Documents
Order Release (OTR)
Hand-Off
Supplier
Compressors, Drivers & Refrig. Units
说明
标志 g
(全局 - 不要在第一次匹配时停止)和 m
(多行 - ^
匹配每行的开头并且 $
匹配每行的末尾)被使用。
^
在行首声明位置\d+
匹配一位或多位数字\.
字面上匹配点字符.
[ \t]*
匹配任意数量的空格或制表符([^-\r\n]+?)
捕获集合-\r\n
中不存在但尽可能少的一个或多个字符到捕获组 1(?:$|[ \t]*-[ \t]*(.*))
匹配以下任意一项$
断言行尾的位置[ \t]*
匹配任意数量的空格或制表符-
字面上匹配连字符-
[ \t]*
匹配任意数量的空格或制表符(.*)
捕获任意次数的任意字符(行终止符除外)到捕获组 2