如何在C#正则表达式中查找作为单词的缩写
我得到了一个字符串列表,可以在字符串中找到完整的“单词”。通常,使用如何在C#正则表达式中查找作为单词的缩写,c#,regex,string,C#,Regex,String,我得到了一个字符串列表,可以在字符串中找到完整的“单词”。通常,使用\b锚定适用于大多数情况,除非我试图将&character作为单词查找,或者因为\b在空格和&character之间不匹配,或者在句点和空格之后,缩写后面有一个点 例如,要查找这些字符串: & b&w bpi p. 我试着写一些东西,比如: \b((&)|(b&w)|(bpi)|(p\.))\b 在测试字符串中: my b&w and & and p. test. my b&
\b
锚定适用于大多数情况,除非我试图将&character作为单词查找,或者因为\b
在空格和&character之间不匹配,或者在句点和空格之后,缩写后面有一个点
例如,要查找这些字符串:
&
b&w
bpi
p.
我试着写一些东西,比如:
\b((&)|(b&w)|(bpi)|(p\.))\b
在测试字符串中:
my b&w and & and p. test.
my b&w and & and p. test.
我还尝试使用
\s
检查空白,但我不想捕获空白,我也无法找到不捕获空白的方法。我相信它还需要检查字符串的开头和结尾。尝试在一个组中使用所有缩写,如:
(^|\s+)(&|b&w|bpi|p\.)(\s+|$)
不使用单词边界(\b),您可以使用(空格)或“^start”或“$end of line.”的环视断言。。像这样:
(?<=^|\s)([^\s]*)(?=\s|$)
匹配项:
"my", "b&w", "and", "&", "and", "p.", "test."
它看起来只匹配
b&w
,而不匹配&
或p.
。大概是因为&
和
本身被认为是非空白字符。这也行不通,因为我在寻找“整词”。如果我将空格设置为可选的,那么最好不要包含\s
。例如,这将匹配单词Philip.
,而不仅仅是p.
。我理解,请再次检查。这非常接近,让我找到了需要的地方。前面和后面的部分是我需要的。中间部分应该改为我原来的部分,这样我们只捕获我需要的特定字符串<代码>(?)?