如何编写匹配所有不包含任何控制字符的字符的正则表达式?
How to write regex which matches all characters that does not contain any control characters?
我需要编写一个正则表达式来匹配不包含任何控制字符的单词。我读到负前瞻用于此并写了这个正则表达式:
/(?!\p{C}+)/
但不明白为什么它不起作用。预期结果:
word without control characters
- 匹配
word with control character between
- 不匹配
您可以使用 \p{C}
匹配任何控制字符。您可以使用 \P{C}
匹配控制字符以外的任何字符。看到一个regex demo with your string.
如果要匹配未粘附到某些控制字符的单词,请使用 (?<!\p{C})\b\w+\b(?!\p{C})
,请参阅 this regex demo。在这里,(?<!\p{C})
是一个负向后视,它匹配一个没有紧接在控制字符前面的位置,\b\w+\b
匹配一个或多个字边界内的单词字符,(?!\p{C})
是一个负向前视,它匹配一个位置没有紧跟控制字符。
如果您想从 \p{C}
模式中“排除”CR 和 LF 字符,您可以使用 (?<![^\P{C}\r\n])\b\w+\b(?![^\P{C}\r\n])
,请参阅 this regex demo。
我需要编写一个正则表达式来匹配不包含任何控制字符的单词。我读到负前瞻用于此并写了这个正则表达式:
/(?!\p{C}+)/
但不明白为什么它不起作用。预期结果:
word without control characters
- 匹配
word with control character between
- 不匹配
您可以使用 \p{C}
匹配任何控制字符。您可以使用 \P{C}
匹配控制字符以外的任何字符。看到一个regex demo with your string.
如果要匹配未粘附到某些控制字符的单词,请使用 (?<!\p{C})\b\w+\b(?!\p{C})
,请参阅 this regex demo。在这里,(?<!\p{C})
是一个负向后视,它匹配一个没有紧接在控制字符前面的位置,\b\w+\b
匹配一个或多个字边界内的单词字符,(?!\p{C})
是一个负向前视,它匹配一个位置没有紧跟控制字符。
如果您想从 \p{C}
模式中“排除”CR 和 LF 字符,您可以使用 (?<![^\P{C}\r\n])\b\w+\b(?![^\P{C}\r\n])
,请参阅 this regex demo。