这是我用作示例的文本。
狗去了那所房子。
狗,去了房子。
狗去了家庭主妇。”
我想使用正则表达式从“ dog”开始并以“ house”结束的字符串。我不希望第三行的第二行,因为它们都有标点符号。我确实想捡起狗和房子。
我想出的正则表达式是:
/(D|d)og.[^\p{P}|s]{0,40}house.{0,1}(\s|\.)/
但是,它似乎不起作用。这是我得到的错误:
Error: Parse error on line 4:
... [
"1,10,0,1,/(C|c)limb
---------------------^
Expecting 'STRING', 'NUMBER', 'NULL', 'TRUE', 'FALSE', '{', '[', ']', got 'undefined'
validated by jsonlint
我从事经济学,而不是计算机编程,所以请放轻松。
让我知道我是否有任何遗漏或需要提供其他信息。
谢谢。
最佳答案
如果只允许单词字符和空格以避免标点符号,则可以执行以下操作:
/dogs?[\w\s]+houses?[\s.]/i
说明:
dog # 'dog'
s? # 's' (optional)
[\w\s]+ # any character of:
# word characters (a-z, A-Z, 0-9, _),
# whitespace (\n, \r, \t, \f, and " ") (1 or more times)
house # 'house'
s? # 's' (optional)
[\s.] # any character of: whitespace (\n, \r, \t, \f, and " "), '.'
Live Demo
如果您不希望包含结尾标点或空格,请将捕获组放在要作为匹配结果的匹配模式周围:
/(dogs?[\w\s]+houses?)[\s.]/i
或使用前瞻性断言一个字符串中的那个位置。
/dogs?[\w\s]+houses?(?=[\s.])/i
注意:还添加了
i
修饰符,用于不区分大小写的匹配。关于javascript - 避免在两个搜索词之间使用标点符号或任何不必要的字符的正则表达式,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24718654/