用于提取每个字母数字模式的正则表达式
Regex to extract each alphanumeric pattern
我有如下字符串
19990101 - John DoeLorem ipsum dolor sit amet 19990102 - Elton Johnconsectetur adipiscing elit
我如何编写一个正则表达式来给我这两个单独的字符串
19990101 - John DoeLorem ipsum dolor sit amet
19990102 - Elton Johnconsectetur adipiscing elit
我写的正则表达式可以做到这一点
/\d+ -/gm
Image
但我不知道如何将字母也包含在那里
Image2
您可以使用
const text = '19990101 - John DoeLorem ipsum dolor sit amet 19990102 - Elton Johnconsectetur adipiscing elit';
console.log(text.match(/\d+\s+-[A-Za-z0-9\s]*[A-Za-z]/g))
console.log(text.split(/(?!^)\s+(?=\d+\s+-)/))
text.match(/\d+\s+-[A-Za-z0-9\s]*[A-Za-z]/g)
方法是 在 \d+\s+-
模式之后提取 alphanumeric/whitespace 个字符。 详情:
\d+
- 一位或多位数字
\s+
- 一个或多个空格
-
- 一个连字符
[A-Za-z0-9\s]*
- 零个或多个字母数字或空白字符
[A-Za-z]
- 一封信
text.split(/(?!^)\s+(?=\d+\s+-)/)
拆分方法在一位或多位数字前用一个或多个空格 + 一个或多个空格 + -
:
拆分字符串
(?!^)
- 不在字符串的开头
\s+
- 一个或多个空格
(?=\d+\s+-)
- 与紧跟一个或多个数字 + 一个或多个空格 + -
. 的位置匹配的正先行
对于 OP 的用例,基于正则表达式的 split
like with ... str.split(/(?<=\w)\s+(?=\d)/)
... 已经应该这样做了。
正则表达式使用 lookarounds,这里试图匹配任何空格(序列)/\s+
,它由一个词/\w
引导/(?<= ... )
并且是后跟/(?= ... )
一个数字/\d
字符。
console.log(
'19990101 - John DoeLorem ipsum dolor sit amet 19990102 - Elton Johnconsectetur adipiscing elit 19990101 - John DoeLorem ipsum dolor sit amet 19990102 - Elton Johnconsectetur adipiscing elit'
.split(/(?<=\w)\s+(?=\d)/)
);
我有如下字符串
19990101 - John DoeLorem ipsum dolor sit amet 19990102 - Elton Johnconsectetur adipiscing elit
我如何编写一个正则表达式来给我这两个单独的字符串
19990101 - John DoeLorem ipsum dolor sit amet
19990102 - Elton Johnconsectetur adipiscing elit
我写的正则表达式可以做到这一点
/\d+ -/gm
Image
但我不知道如何将字母也包含在那里
Image2
您可以使用
const text = '19990101 - John DoeLorem ipsum dolor sit amet 19990102 - Elton Johnconsectetur adipiscing elit';
console.log(text.match(/\d+\s+-[A-Za-z0-9\s]*[A-Za-z]/g))
console.log(text.split(/(?!^)\s+(?=\d+\s+-)/))
text.match(/\d+\s+-[A-Za-z0-9\s]*[A-Za-z]/g)
方法是 在 \d+\s+-
模式之后提取 alphanumeric/whitespace 个字符。 详情:
\d+
- 一位或多位数字\s+
- 一个或多个空格-
- 一个连字符[A-Za-z0-9\s]*
- 零个或多个字母数字或空白字符[A-Za-z]
- 一封信
text.split(/(?!^)\s+(?=\d+\s+-)/)
拆分方法在一位或多位数字前用一个或多个空格 + 一个或多个空格 + -
:
(?!^)
- 不在字符串的开头\s+
- 一个或多个空格(?=\d+\s+-)
- 与紧跟一个或多个数字 + 一个或多个空格 +-
. 的位置匹配的正先行
对于 OP 的用例,基于正则表达式的 split
like with ... str.split(/(?<=\w)\s+(?=\d)/)
... 已经应该这样做了。
正则表达式使用 lookarounds,这里试图匹配任何空格(序列)/\s+
,它由一个词/\w
引导/(?<= ... )
并且是后跟/(?= ... )
一个数字/\d
字符。
console.log(
'19990101 - John DoeLorem ipsum dolor sit amet 19990102 - Elton Johnconsectetur adipiscing elit 19990101 - John DoeLorem ipsum dolor sit amet 19990102 - Elton Johnconsectetur adipiscing elit'
.split(/(?<=\w)\s+(?=\d)/)
);