正则匹配:如何匹配不含特定字符的字符串
匹配不含特定字符的空格分隔内容的正则表达式
直接用这个正则就能满足你的需求:
(?<!\S)(?!.*%)\S+(?!\S)
规则拆解:
(?<!\S):确保匹配内容的开头是空格或字符串起始位置,避免从单词中间截取片段(?!.*%):负向前瞻校验,确保当前匹配的整个内容里不包含%,存在%的话直接跳过该单词\S+:匹配一个或多个非空白字符,对应你说的“按空格分隔的任意内容”(?!\S):确保匹配内容的结尾是空格或字符串结束位置,避免截取不完整的内容
验证你的示例:
输入文本:foo anot%her bar idk%what @IJ#N
用该正则匹配后,会精准得到:foo、bar、@IJ#N,完全符合预期。
如果需要排除其他特定字符,只需要把(?!.*%)里的%替换成目标字符即可,比如要排除#就改成(?!.*#)。
内容的提问来源于stack exchange,提问作者FoliageOwO
相关产品推荐
相关产品推荐

