避免两个搜索词之间的标点符号或任何不需要的字符的正则表达式
Regular expression that avoids punctuation or any unwanted characters between two search words
这是我作为一个例子使用的文本。
狗去了房子。狗儿们来到了房子里。狗去找家庭主妇。"
我想使用正则表达式来获取从"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 " "), '.'
现场演示
如果不希望包含结尾标点或空格,请在匹配的模式周围放置一个捕获组作为匹配结果:
/(dogs?['w's]+houses?)['s.]/i
或者使用forward来断言其中一个在字符串的那个位置。
/dogs?['w's]+houses?(?=['s.])/i
注释:添加了i
修饰符,用于不区分大小写的匹配
相关文章:
- 函数参数中的数据与指定变量之间的任何性能差异
- 有没有任何方法可以将控制器从文件加载到ui路由器$stateProvider中
- jQuery中是否内置了任何字符串格式化函数
- 在单击任何位置时隐藏元素,而不检查每次DOM单击
- 是否有任何snippet或jQuery插件可以列出easylist.txt模式匹配的DOM中的所有元素
- 有任何可能将facebook实时信使整合到一个网站中
- 是否有任何方法可以使用jQuery替换在数组中定义值的文本
- AJAX:$_GET不返回任何值
- 在同一个服务工作者中处理service-worker.js有任何影响吗
- 将事件处理程序绑定到任何可能的事件
- 在Highcharts中,我们可以通过任何方式在渲染图表之前获得plotWidth和plotHeight
- 任何方式使AJAX调用Gmail API,而无需通过JS库
- document.styleSheets不返回任何内容
- 在D3.js中,有没有任何方法可以将x和y方向上的滚动事件绑定到平移svg
- Graphiti中是否有任何工具提示功能
- 有没有任何方法可以使用node-js从不同的机器打开浏览器
- 在解析对象.save()中;没有返回任何原因
- 您将如何构建一个正则表达式,将段落拆分为句子,但不拆分<>内的任何标点符号
- 避免两个搜索词之间的标点符号或任何不需要的字符的正则表达式
- 使用正则表达式将任何字符串分隔成一个完整的单词,标点符号&html标记