И вы также можете заменить все не-буквы / цифры в начале и / или конце строки:
^[^\p{L}\p{N}]*|[^\p{L}\p{N}]*$
, используемый как
resultString = Regex.Replace(subjectString, @"^[^\p{L}\p{N}]*|[^\p{L}\p{N}]*$", "", RegexOptions.Multiline);
Если вы действительно хотят только удалить символы в начале и конце строки и не делать это по строкам, а затем удалить опцию ^ $ в параметре linebreak (RegexOption.Multiline)
Если вы хотите включить ведущие или завершающие символы подчеркивания, в качестве символов, которые нужно сохранить, вы можете упростить регулярное выражение:
^\W+|\W+$
Ядро регулярного выражения:
[^\p{L}\p{N}]
является отрицательным символьным классом, который включает все символы в классе Unicode букв \ p {L} или Numbers \ p {N}
. Другими словами:
Обрезать алфавитно-цифровые символы без юникода
^[^\p{L}\p{N}]*|[^\p{L}\p{N}]*$
Options: Case sensitive; Exact spacing; Dot doesn't match line breaks; ^$ match at line breaks; Parentheses capture
Match this alternative «^[^\p{L}\p{N}]*»
Assert position at the beginning of a line «^»
Match any single character NOT present in the list below «[^\p{L}\p{N}]*»
Between zero and unlimited times, as many times as possible, giving back as needed (greedy) «*»
A character from the Unicode category “letter” «\p{L}»
A character from the Unicode category “number” «\p{N}»
Or match this alternative «[^\p{L}\p{N}]*$»
Match any single character NOT present in the list below «[^\p{L}\p{N}]*»
Between zero and unlimited times, as many times as possible, giving back as needed (greedy) «*»
A character from the Unicode category “letter” «\p{L}»
A character from the Unicode category “number” «\p{N}»
Assert position at the end of a line «$»
Создано с помощью RegexBuddy