我正在寻找JavaScript的正则表达式,它将识别英语中的单词边界,同时接受出现在单词内的连字符和撇号,但不包括单独出现或单词的开头或结尾的连字符。
例如,对于句子......
她说 - “那就是全部,双炒。”
...我想要检测下面灰色显示的字符:
她说
- '
,
所有.'
双炒/[^A-Za-z'-]/g
如果我使用正则表达式,则不会检测到“松散”连字符和撇号。
她 {称{1}} -
“这将
为
{全部{1}}两弗莱
,
如何更改我的正则表达式,以便它检测两边都没有单词字符的撇号和连字符?
您可以在此处测试我的正则表达式:https://regex101.com/r/bR8sV1/2
注意:我将要处理的文本可能包含其他编写脚本,例如руский和ไทอ,因此简单地包含所有不属于任何英文单词的字符是不可行的。
答案 0 :(得分:3)
您可以将单词边界字符组织成两组。
适用于您的示例的正则表达式将是:
[\s.,'-]{2,}|[\s.]
现在剩下的就是继续将所有非单词字符添加到这两个组中,直到它满足您的所有需求。因此,您可能会开始向这些字符类添加符号和标点符号。
答案 1 :(得分:1)
你可以这样写:
(\s|[!-/]|[:-@]|[\[-`]|[\{-~])*\s(\s|[!-/]|[:-@]|[\[-`]|[\{-~])*
或紧凑版:
(\s|[!-/:-@\[-`\{-~])*\s(\s|[!-/:-@\[-`\{-~])*
RegExp需要一个\s
(空格字符),并在它之前和之后选择als空格和非字母数字字符。
https://regex101.com/r/bR8sV1/4
\s
匹配所有空格!-/
来自!
至/
:-@
来自:
至@
\[-``
来自[
至``
\{-~
来自{
至~