已关闭。此问题需要details or clarity。当前不接受答案。
**想要改进此问题吗?**通过editing this post添加详细信息并阐明问题。
10天前关闭。
此帖子已在9天前编辑并提交审核,无法重新打开帖子:
原始关闭原因未解决
Improve this question
我需要从文本开头到空格后的文本开头获得名称。
CHIMET S.P.A. RIF. INT. N. 1 AREZZO SEDE 52041 BADIA AL PINO AR ITALIA
C.H.M. DO BRASIL METALS LTDA ME 15 ED.QS TWO HANDS JARDI GOIANIA BRASILE
US3 MGMT AL FRANCA 1185 CONJ 21
D'AVILA H. VALENTE GUILHERME AV. MAURO RAMOS
如何用正则表达式解决这个问题?
- CHIMET S.P.A.
- C.H.M. DO BRASIL METALS LTDA ME
- US3 MGMT
- D'AVILA H. VALENTE GUILHERME
3条答案
按热度按时间x7rlezfr1#
看起来你想要捕获组中两个之间的所有东西,所以首先你把两个 * 放在每一端,但是它们需要被转义,因为 * 在正则表达式中有特殊的含义,所以第一步是
\*\*
的正则表达式,如果你用一个正则表达式测试器,比如regex101,您将看到边界是匹配的。然后添加捕获组(它抓住你想要的东西),带括号,\*\*()
,但这什么也不抓住。最常见的是.
,意思是“任何单个字符”,但是你想要边界之间的所有字符,所以你使用*
,意思是“零个或多个前导字符”。现在它会抓取文本中“”之后的所有内容,因此您需要关闭边界,这可以通过
\*\*(.*)\*\*
来完成。但是,我怀疑您想用第一个“**”字符串来关闭,以防同一行上有多个组,因此您在捕获组中的*
之后添加?
,这意味着“立即匹配”,因此最终正则表达式将是\*\*(.*?)\*\*
。所以
解析为这3个捕获组
You can see this example at this link.
如何在C#.NET中操作捕获组是一个不同的问题,我留给您或其他人。
9avjhtql2#
以下模式有效:
(?:\*{2})(?<token>.+[^\*])(?:\*{2})
https://regex101.com/r/tNV9O6/1
下面是我的解决方案:
nkcskrwz3#
你必须更详细地描述这个问题。你的意思是从大量的名字中用一个正则表达式来匹配这三个名字吗?用三个不同的正则表达式一次匹配一个吗?