我创建了一个自动化的电源自动化流程-在任何传入的电子邮件上执行并执行unbound action
-一个用C#编写的custom action
“ValidateEmailBody”并在CRM插件注册中注册。
我使用自定义正则表达式来读取预定义模板中传递的值,到目前为止,它工作得很好,但现在我想让它与用户兼容。
这里的要求是-修剪邮件发件人错误添加的前后空格,以便自定义操作可以正确获取记录。
下面是给定正则表达式的工作模板:
正则表达式:
var templatePattern = new Regex(@"Case title:[ ]{1,}(?<caseTitle>.*?)\n{1,}Client:[ ]{1,}(?<client>.*?)\n{1,}Origin:[ ]{1,}(?<origin>.*?)\n{1,}Contact:[ ]{1,}(?<contact>.*?)\n{1,}DSM:[ ]{1,}(?<dsm>.*?)\n{1,}CSM:[ ]{1,}(?<csm>.*?)\n{1,}Assigned To:[ ]{1,}(?<assignedTo>.*?)\n{1,}Due Date:[ ]{1,}(?<dueDate>.*?)\n{1,}Description:[ ]{1,}(?<desc>.*?)$");
regex解释:
[]{1,} -> Can have one or more spaces
?<groupName>.*? -> Creates a group name to extract the word(s)
\n{1,} --> Allows one or more new line
$ --> End of line
模板:
案例标题:样本测试案例9客户:8688211来源:电子邮件联系人:testing@me.com DSM:testContact1 CSM:testContact 1分配给:testing@me.com到期日:06/28/2023描述:样品描述9
现在,我想从值中删除多余的空格,并只读取**C#**中的值。请参考以下模板:
新增可能模板:
案例标题:样本测试案例9客户:8688211来源:电子邮件联系人:testing@me.com DSM:testContact1 CSM:testContact 1分配给:testing@me.com
到期日:2023年6月28日描述:样品描述9
为了实现这一点,我需要对我的自定义操作或正则表达式做哪些更改?
FYR,我正在阅读这个值,因为基于此,我需要在CRM中创建一个新的记录-所以如果有额外的空格或新行将阻止我这样做。
先谢谢你了。
1条答案
按热度按时间am46iovg1#
如果您想匹配整行的值,可以使用
\S
匹配捕获组中的非空白字符,然后在后面添加可选空格,直到下一行换行符。请注意,您只匹配空格。如果要匹配空格而不带换行符,则可以使用
[\p{Zs}\t]+
像
[ ]{1,}
这样的结构可以缩短为+
,\n{1,}
可以缩短为\n+
Regex demo
因此,每个单独的行都具有相同的模式结构: