【发布时间】:2015-01-25 16:59:36
【问题描述】:
我已经阅读了 wiki 和其他建议的材料,但我无法理解如何创建这个 Regex。
要详细说明,它是必需的,因为我需要将一个句子分成单词,并且只有单词/值,以便我可以将每个单词与其他句子中的其他单词进行比较。这意味着它的“”对于保留美元符号很重要,因为 10 美元与 10 美元不同,百分比和带有撇号的“Tom's”也是如此。使用 £$€#& 仅在后面没有空格时删除,因为 & 可用于公司名称(如 B&Q 和金钱),货币符号本身与我的需求无关。
所以应该是:删除除 £$€#&+- 之外的所有标点符号,除非后面有空格,如果前面有空格,则删除 %。
然后我会用空格分割成一个数组,它就是这个该死的正则表达式。
我有一个正则表达式白名单:
Regex.Replace(string, @"[^0-9a-zA-Z\s]+", "");
我只是不知道如何指定一个字符+空格或空格+字符,例如删除“$”但在它的“$10”时留下 $ 我知道 \s 是哪个空格但我如何附加到我不知道的正则表达式。
【问题讨论】:
-
如果您不知道如何使用正则表达式,请使用 string.split。
-
嗯,我想删除而不是最初拆分,并且拥有 1 个正则表达式将比我需要的 10 个左右单独的 string.removes 更好。此外,我宁愿不只是满足于一种凌乱的方法,因为人们不想提供帮助,就像这个网站不是为了寻求帮助......
-
如果您甚至无法向我们提供您如何尝试自己完成它的示例(至少删除
%前面带有空格的部分),我们无法相信您在询问之前实际上尝试了某些东西.如果你不愿意花时间去做,你也不能指望我们去做。用空字符串替换/ %/并不难;或查找字符范围,然后对空间执行lookahead并再次替换。所以请去尝试更多,向我们提供你所做的,然后我们可以真正帮助你:) -
我有一个 a-zA-Z-0-9 的基本正则表达式白名单,但仅此而已,我已经编辑了我的问题以显示这一点。
标签: c# regex string split punctuation