正则表达式中的字符串开头匹配

时间:2016-02-02 22:27:02

标签: javascript regex

我想在第一行和第三行匹配Hello这个词:

     Hello should be matched
I do not want this Hello to be matched
Hello should be matched

当我使用^\s*Hello时,事情几乎可行,但我不希望空格实际包含在结果中。

(?=\s*)Hello更近,但匹配所有3个Hellos。

我希望^(?=\s*)Hello(?=^\s*)Hello能够发挥作用,并且对于他们为什么不这样做感到困惑。为什么不做这些工作?如何创建一个与匹配的正则表达式" Hello"在一些空白之后?

3 个答案:

答案 0 :(得分:0)

无法指定匹配的来源(第一行,第三行等)。正确执行此操作的唯一方法是逐行输入句子,并以编程方式跟踪匹配来自哪条线。

此正则表达式将匹配您要查找的内容

\b([H|h]ello)\b

你需要做的是将你正在寻找的东西包裹在()中作为捕捉goup

已编辑 -

^\s*(Hello)

答案 1 :(得分:0)

创建一个捕获组:

str1 = '     Hello should be matched';
str2 = 'I do not want this Hello to be matched';
str3 = 'Hello should be matched';

str1 = str1.match(/^\s*(Hello)/);
if (str1) {
  str1 = str1[1];
} else {
  str1 = '';
}
str2 = str2.match(/^\s*(Hello)/);
if (str2) {
  str2 = str2[1];
} else {
  str2 = '';
}
str3 = str3.match(/^\s*(Hello)/);
if (str3) {
  str3 = str3[1];
} else {
  str3 = '';
}
$('#output').append('str1: ' + str1 + '<br>str2: ' + str2 + '<br>str3: ' + str3 + '');
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="output"></div>

答案 2 :(得分:0)

以下是您的解决方案:

^\b(Hello)\b.*\n.*\n\b(Hello)\b.*$

https://regex101.com/r/vZ9pF8/1