匹配不是以日期开始的行
Matches lines not starting by Date
我有一些从 pdf 文件中提取的文本,我正在寻找一些关键字来匹配职位,我尝试使用许多正则表达式来只获取不是以日期(任何日期格式)开头的行,但我必须获得以任何其他数字或单词开头的其他行。
我希望能在这里找到一个绝妙的主意。
最佳
我试过这两个正则表达式来查找 ingenieur 关键字但没有成功:
((?m)^(?![0-9])\s*\b"+ sTofind +"\b)
还有这个:
((?m)[^(?!(0-9))][\s{2,4}]\b"+ sTofind +"\b.*)
我使用的文本测试是这个(> 字符不是文本的一部分):
etudiant -: ingenieur etudes et developpement
http://www.doyoubuzz.com/profilen
experiences
ingenieur
2018-2014 ingenieur
331 ingenieur
29 rue de la terrasse Ingenieur Centrale Lyon / Supélec
93160 NOISY LE GRAND ingenieur
09 66 11 10 93 Expertise en instrumentation industrielle,
06 44 25 90 09 automatisation ingenieur & marketing opérationnel
email.email@wanadoo.fr Bilingue anglais ingenieur
我希望找到突出显示的文本:
etudiant -: <i>ingenieur etudes et developpement</i>
http://www.doyoubuzz.com/profilen
<i>experiences</i>
<i>ingenieur</i>
2018-2014 ingenieur
331 <i>ingenieur</i>
29 rue de la terrasse <i>Ingenieur Centrale Lyon / Supélec </i>
93160 NOISY LE GRAND <i>ingenieur</i>
09 66 11 10 93 Expertise en instrumentation industrielle,
06 44 25 90 09 automatisation <i>ingenieur & marketing opérationnel </i>
email.email@wanadoo.fr Bilingue anglais <i>ingenieur</i>
您可能会使用:
(?mi)^((?![0-9]+-[0-9]+).*?)(\bingenieur\b.*)
关于图案
(?mi)
多行和不区分大小写的标志
^
字符串开头
(
捕获组
(?!
否定前瞻,断言右边的不是
[0-9]+-[0-9]+
匹配 1+ 个数字、一个连字符和 1+ 个数字
- )
.*?
关闭否定先行并匹配除换行符之外的任何字符非贪婪
)
关闭捕获组
(\bingenieur\b.*)
捕获在字边界之间直到字符串末尾匹配工程师的组
您可以在代码中启用多行和不区分大小写的标志,例如:
String sTofind = "ingenieur";
String regex = "^((?!>[0-9]+-[0-9]+).*?)(\b"+ sTofind + "\b.*)";
String string = "...";
Pattern pattern = Pattern.compile(regex, Pattern.MULTILINE | Pattern.CASE_INSENSITIVE);
Matcher matcher = pattern.matcher(string);
String result = matcher.replaceAll(subst);
然后你也可以用 experiences
替换 ingenieur ,如果你也想突出显示的话。
并替换为您可以突出显示第二组的 2 个捕获组:
<i></i>
我有一些从 pdf 文件中提取的文本,我正在寻找一些关键字来匹配职位,我尝试使用许多正则表达式来只获取不是以日期(任何日期格式)开头的行,但我必须获得以任何其他数字或单词开头的其他行。
我希望能在这里找到一个绝妙的主意。 最佳
我试过这两个正则表达式来查找 ingenieur 关键字但没有成功:
((?m)^(?![0-9])\s*\b"+ sTofind +"\b)
还有这个:
((?m)[^(?!(0-9))][\s{2,4}]\b"+ sTofind +"\b.*)
我使用的文本测试是这个(> 字符不是文本的一部分):
etudiant -: ingenieur etudes et developpement
http://www.doyoubuzz.com/profilen
experiences
ingenieur
2018-2014 ingenieur
331 ingenieur
29 rue de la terrasse Ingenieur Centrale Lyon / Supélec
93160 NOISY LE GRAND ingenieur
09 66 11 10 93 Expertise en instrumentation industrielle,
06 44 25 90 09 automatisation ingenieur & marketing opérationnel
email.email@wanadoo.fr Bilingue anglais ingenieur
我希望找到突出显示的文本:
etudiant -: <i>ingenieur etudes et developpement</i>
http://www.doyoubuzz.com/profilen
<i>experiences</i>
<i>ingenieur</i>
2018-2014 ingenieur
331 <i>ingenieur</i>
29 rue de la terrasse <i>Ingenieur Centrale Lyon / Supélec </i>
93160 NOISY LE GRAND <i>ingenieur</i>
09 66 11 10 93 Expertise en instrumentation industrielle,
06 44 25 90 09 automatisation <i>ingenieur & marketing opérationnel </i>
email.email@wanadoo.fr Bilingue anglais <i>ingenieur</i>
您可能会使用:
(?mi)^((?![0-9]+-[0-9]+).*?)(\bingenieur\b.*)
关于图案
(?mi)
多行和不区分大小写的标志^
字符串开头(
捕获组(?!
否定前瞻,断言右边的不是[0-9]+-[0-9]+
匹配 1+ 个数字、一个连字符和 1+ 个数字
- )
.*?
关闭否定先行并匹配除换行符之外的任何字符非贪婪
)
关闭捕获组(\bingenieur\b.*)
捕获在字边界之间直到字符串末尾匹配工程师的组
您可以在代码中启用多行和不区分大小写的标志,例如:
String sTofind = "ingenieur";
String regex = "^((?!>[0-9]+-[0-9]+).*?)(\b"+ sTofind + "\b.*)";
String string = "...";
Pattern pattern = Pattern.compile(regex, Pattern.MULTILINE | Pattern.CASE_INSENSITIVE);
Matcher matcher = pattern.matcher(string);
String result = matcher.replaceAll(subst);
然后你也可以用 experiences
替换 ingenieur ,如果你也想突出显示的话。
并替换为您可以突出显示第二组的 2 个捕获组:
<i></i>