正则表达式可能不是正确的工具,所以如果这是一个很好的答案。
即使被非字母字符拆分,我也想找一个字。例如,如果我试图找到One
,O-ne
会匹配,--O__n--e
会匹配,但O--nce
则不匹配。
避免XY问题:这是为了匹配亵渎过滤器中的单词。出现了这种情况,并且使用String.toLower
,String.Indexof
和String.Replace
删除所有非字母,并使用*
s替换单词,这是一个相当简单(如果很长)的解决方案然后重建原始字符串。我试图使用正则表达式找到解决方案。这是我到目前为止所尝试的:
(.\*)(([^a-zA-Z]*)(?i)(Y)([^a-zA-Z]*)(?i)(e)([^a-zA-Z]*)(?i)(s)([^a-zA-Z]*)\b)(.\*)
它与I wasn't born --Y_e--s
匹配,但不匹配I wasn't born --Y_e--st
。
所以我在?
之后添加\b
以使--Y_e--s
部分可选(当然,开头(.*
)贪婪匹配整个字符串,无论何时何地),改为:
(.\*?)(([^a-zA-Z]*)(?i)(Y)([^a-zA-Z]*)(?i)(e)([^a-zA-Z]*)(?i)(s)([^a-zA-Z]*)\b)?(.\*?)
与任何东西都不匹配。
我很难过。我想要的是:
(Capture Group start of string) (Capture group of my Target word that might be separated by non Letter characters) (Capture Group of End of string).
答案 0 :(得分:1)
嗯,我不确定你使用哪种正则表达式,但你可以尝试一下。
https://regex101.com/r/qR1aP5/1
(\S)\s*(\S+)(\S)\s*(\S+)(\S)\s*(\S+)
与此文本匹配
I wasn't born --Y_e--s