如何使用正则表达式获取第一个词和最后一个词
How can I get the first and last word using regex
我知道使用正则表达式你可以得到每个单词和它们的第一个字母:
/\b(\w)/g,
但是还有办法得到第一个词吗?(我尝试了很多谷歌搜索,但找不到同时做这两个词的方法,而不是第一个词或最后一个词)
我相信应该可以在 1 个正则表达式而不是 2 个不同的正则表达式中得到两者。
我的字符串和想要的结果的示例?
字符串:世界先生你好
会回馈:['H'、'w']
^\w|\b\w(?=\S+$)
尝试 this.See 演示。
https://regex101.com/r/fA6wE2/31
编辑:
^\s*(\w)|\b(\w)(?=\S+$)
如果开头有空格,则使用它并抓取组或捕获。
虽然它只会处理相当具体的输入,但您应该能够使用类似的东西:
var test = [
"Get the first and last word",
"Hello world!",
"foo bar",
"this is a test, for matches",
"test"
];
var rex = /^((\w*)\s?).*?(\s?(\w*)[^\w\s]*)$/;
test.forEach(function(it) {
document.getElementById("results").textContent += JSON.stringify(rex.exec(it)) + "\n";
});
<pre id="results"></pre>
第 2 场和第 4 场将为您提供第一个和最后一个单词的修剪版本。
分解,正则表达式 /^((\w*)\s?).*?(\s?(\w*)[^\w\s]*)$/
:
- 匹配单词字符的第一个序列,可选地后跟空格(匹配 1 是完整序列,匹配 2 不包括结尾的空格字符)。
- 匹配任何内容,但为最后的单词匹配留出空间。
- 匹配另一个可选的空白字符,然后是一些单词字符,然后是任何其他字符(可能是标点符号)(匹配 3 是完整序列,匹配 4 不包括前导空白和尾随标点符号)
^(\w).*\b(\w).*?$
会给你想要的东西。 regex101
我知道使用正则表达式你可以得到每个单词和它们的第一个字母:
/\b(\w)/g,
但是还有办法得到第一个词吗?(我尝试了很多谷歌搜索,但找不到同时做这两个词的方法,而不是第一个词或最后一个词) 我相信应该可以在 1 个正则表达式而不是 2 个不同的正则表达式中得到两者。
我的字符串和想要的结果的示例?
字符串:世界先生你好
会回馈:['H'、'w']
^\w|\b\w(?=\S+$)
尝试 this.See 演示。
https://regex101.com/r/fA6wE2/31
编辑:
^\s*(\w)|\b(\w)(?=\S+$)
如果开头有空格,则使用它并抓取组或捕获。
虽然它只会处理相当具体的输入,但您应该能够使用类似的东西:
var test = [
"Get the first and last word",
"Hello world!",
"foo bar",
"this is a test, for matches",
"test"
];
var rex = /^((\w*)\s?).*?(\s?(\w*)[^\w\s]*)$/;
test.forEach(function(it) {
document.getElementById("results").textContent += JSON.stringify(rex.exec(it)) + "\n";
});
<pre id="results"></pre>
第 2 场和第 4 场将为您提供第一个和最后一个单词的修剪版本。
分解,正则表达式 /^((\w*)\s?).*?(\s?(\w*)[^\w\s]*)$/
:
- 匹配单词字符的第一个序列,可选地后跟空格(匹配 1 是完整序列,匹配 2 不包括结尾的空格字符)。
- 匹配任何内容,但为最后的单词匹配留出空间。
- 匹配另一个可选的空白字符,然后是一些单词字符,然后是任何其他字符(可能是标点符号)(匹配 3 是完整序列,匹配 4 不包括前导空白和尾随标点符号)
^(\w).*\b(\w).*?$
会给你想要的东西。 regex101