gpt4 book ai didi

c# - 正则表达式 : how to get words from a string (C#)

转载 作者:可可西里 更新时间:2023-11-01 08:03:39 25 4
gpt4 key购买 nike

我的输入由用户发布的字符串组成。

我想做的是创建一个包含单词的字典,以及它们的使用频率。这意味着我想解析一个字符串,删除所有垃圾,并获得一个单词列表作为输出。

例如,假设输入是“#@!@LOLOLOL 你已经成为了\***PWN3D*** !:') !!!1einszwei drei!”

我需要的输出是列表:

  • “大声笑”
  • “你已经”
  • “曾经”
  • “PWN3D”
  • “einszwei”
  • “drei”

我不是正则表达式的英雄,一直在谷歌搜索,但我的谷歌功夫接缝很弱......

我如何从输入到想要的输出?

最佳答案

简单的正则表达式:

\w+

这匹配一串“单词”字符。这就是几乎您想要的。

这个稍微准确一些:

\w(?<!\d)[\w'-]*

它匹配任意数量的单词字符,确保第一个字符不是数字。

这是我的比赛:

1 LOLOLOL
2 YOU'VE
3 BEEN
4 PWN3D
5 einszwei
6 drei

现在,更像是它了。

编辑:
负面回顾的原因是一些正则表达式风格支持 Unicode 字符。使用 [a-zA-Z] 会错过很多需要的“单词”字符。允许\w并且不允许 \d包括可以想象在任何文本 block 中开始一个单词的所有 Unicode 字符。

编辑 2:
我找到了一种更简洁的方法来获得负向后视的效果:双负字符类和一个负排除。

[^\W\d][\w'-]*(?<=\w)

除了它还确保单词以单词字符结尾之外,这与上面的相同。最后,还有:

[^\W\d](\w|[-']{1,2}(?=\w))*

确保一行中的非单词字符不超过两个。又名,它匹配“word-up”而不是“word--up”,这是有道理的。如果你想让它匹配“word--up”,而不是“word---up”,你可以改变23 .

关于c# - 正则表达式 : how to get words from a string (C#),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2159026/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com