查找具有前导或尾随空格的字符集
Find characters of a set with a leading OR trailing whitespace
我想编写正则表达式来匹配一组由白色 space 或其他 space 字符
开始或后继的字符
到目前为止我有 ((?<=[\s\S])|(?=[\s\S]))[^\s\p{L}\p{N}]+
但是在下面的演示中,它匹配的字符两边都没有 space。
任何建议将不胜感激
演示
在此示例中,问题是 gskinner.com,
,并且应该只匹配逗号。然而句号用当前的正则表达式突出显示
您可以使用此正则表达式来使用交替和环视:
(?<=\s)[^\s\p{L}\p{N}]+|[^\s\p{L}\p{N}]+(?=\s)
正则表达式详细信息:
(?<=\s)[^\s\p{L}\p{N}]+
:匹配前面有空格的非单词非空白字符
|
: 或
[^\s\p{L}\p{N}]+(?=\s)
:匹配后跟一个空格的非单词非空白字符
正则表达式具有执行条件 (if-then-else) 语句的能力。使用这个,我们可以检查字符前面是否有空格;否则,我们可以检查它后面是否跟有空格。如果做不到这一点,我们就不匹配。
(?(?<=^|\s)\p{P}|\p{P}(?=\s|$))
此正则表达式检查字符串的开头或您计划匹配的字符之前的空格,如果失败,则检查后跟空格或行尾的字符集。 \p{P}
查找任何类型的标点符号。 将 \p{P}
替换为您想要捕获的任何内容。
我想编写正则表达式来匹配一组由白色 space 或其他 space 字符
开始或后继的字符到目前为止我有 ((?<=[\s\S])|(?=[\s\S]))[^\s\p{L}\p{N}]+
但是在下面的演示中,它匹配的字符两边都没有 space。
任何建议将不胜感激
演示
在此示例中,问题是 gskinner.com,
,并且应该只匹配逗号。然而句号用当前的正则表达式突出显示
您可以使用此正则表达式来使用交替和环视:
(?<=\s)[^\s\p{L}\p{N}]+|[^\s\p{L}\p{N}]+(?=\s)
正则表达式详细信息:
(?<=\s)[^\s\p{L}\p{N}]+
:匹配前面有空格的非单词非空白字符|
: 或[^\s\p{L}\p{N}]+(?=\s)
:匹配后跟一个空格的非单词非空白字符
正则表达式具有执行条件 (if-then-else) 语句的能力。使用这个,我们可以检查字符前面是否有空格;否则,我们可以检查它后面是否跟有空格。如果做不到这一点,我们就不匹配。
(?(?<=^|\s)\p{P}|\p{P}(?=\s|$))
此正则表达式检查字符串的开头或您计划匹配的字符之前的空格,如果失败,则检查后跟空格或行尾的字符集。 \p{P}
查找任何类型的标点符号。 将 \p{P}
替换为您想要捕获的任何内容。