【发布时间】:2016-09-02 02:05:49
【问题描述】:
在尝试让这个正则表达式工作时,我真的筋疲力尽。我在 sas 中使用 perl 正则表达式。如果有人可以帮助我,我将不胜感激。我有三个问题,考虑以下几行文字(行号仅供参考):
1 weight
2 weightchange
3 weight change
4 weight percentile
5 change weight
6 percentile weight
7 **** weight pre op
8 water weight
9 weight percentile
10 myocardial infarction
如何使用正则表达式匹配
1而不是2-9? (是一种同时匹配开头和结尾的单词的方法吗?)如何使用正则表达式和负前瞻/后瞻断言来匹配
1,然后明确排除2-6?如何修改适合解决 Q2 的正则表达式,然后排除
7和8?
额外问题:您花了多长时间熟练地使用正则表达式?
谢谢!
【问题讨论】:
-
SO 不是免费的编码服务。如果您已经为此工作了一周,那么您肯定会进行一些接近您想要的尝试。发布它们,然后我们可以帮助您修复它们。但我们不会为你做这件事。
-
第一季度你不能用
^weight$吗? -
如图所示,您的 (1) 很简单 (
/^weight\s*$/) ...然后问题是 (2) 和 (3) 不相关 - 你不不需要所有这些来区分它们。如果你真的想要它,作为练习,它是环视的基本使用。例如,/weight(?!\s*(?:change|percentile))/让它匹配weight后面没有列出的单词等。 // 这需要经验,所以需要几年。但是,您可以非常快速地学习基础知识,以便非常充分地使用。 // 最重要的是:请让您的问题更加具体——告诉我们什么令人困扰,告诉我们您做了什么。 -
从这个问题看来,您可能需要彻底从一些介绍性文本开始阅读。
perlretut很好,我认为尤其是lookarounds上的部分。还有许多其他来源。更好的是,也许是你最喜欢的 Perl 书中的一章。如果您想通过四处寻找来“弄清楚”,那可能会很困难。我会说,先阅读它然后玩。 -
更正上面评论中的第一个例子——因为你的字符串可能在开头有空格,你需要
/^\s*weight\s*$/。