我的正则表达式需要帮助。
我需要删除在文本开头
中找到的特殊字符例如我有这样的文字
.just a $#text this should not be incl#uded
输出应该是这样的
just a text this should not be incl#uded
I've been testing my regex here but i can't make it work
([\!-\/\;-\@]+)[\w\d]+
如何限制正则表达式只检查以特殊字符开头的文本?
谢谢
答案 0 :(得分:2)
使用\B[!-/;-@]+\s*\b
:
var result = Regex.Replace(s, @"\B[!-/;-@]+\s*\b", "");
请参阅regex demo
<强>详情
\B
- 字边界以外的位置(必须在当前位置的左侧立即开始字符串或非字字符)[!-/;-@]+
- 一个或多个ASCII标点符号\s*
- 0+空白字符\b
- 字边界,当前位置右侧必须有字母/数字/下划线。如果您打算删除所有标点符号和符号,请使用
var result = Regex.Replace(s, @"\B[\p{P}\p{S}]+\s*\b", "");
请注意\p{P}
匹配任何标点符号,\p{S}
匹配任何符号。
答案 1 :(得分:1)
使用前瞻:
(^[.$#]+|(?<= )[.$#]+)
^[.$#]+
用于匹配行首的特殊字符。
(?<= )[.$#]+)
用于匹配句子中单词开头的特殊字符。
根据需要在角色组[]
中添加特殊字符。
答案 2 :(得分:1)
以下是您的问题详细信息中的两个可能选项。希望它会对你有所帮助。
string input = ".just a $#text this should not be incl#uded";
//REMOVING ALL THE SPECIAL CHARACTERS FROM THE WHOLE STRING
string output1 = Regex.Replace(input, @"[^0-9a-zA-Z\ ]+", "");
// REMOVE LEADING SPECIAL CHARACTERS FROM EACH WORD IN THE STRING. WILL KEEP OTHER SPECIAL CHARACTERS
var split = input.Split();
string output2 = string.Join(" ", split.Select(s=> Regex.Replace(s, @"^[^0-9a-zA-Z]+", "")).ToArray());
答案 3 :(得分:1)
否定前瞻在这里很好:
(?![\.\$#].*)[\S]+
https://regex101.com/r/i0aacp/11/
[\S]
匹配任何字符
(?![\.\$#].*)
否定前瞻意味着这些字符[\S]+
不应以\.\$#