问题: 我有一个多行文字。一行可以包含多个句子。 我需要一个正则表达式,它只显示行的第一个单词本身包含非特定数字的行(可能是1或2234234)
例如:
Thi5 is a t3st.
我想在结果中使用这一行。This is also a test but with a number in the first word of the second sentence. Th1s is the 2nd sentence
,我在结果中不希望这样。This is a t3st
,但我对这一行也不感兴趣。Th1s i want too.
0r this one as well
0r this one i want regardless of the whitepace in front of it
But n0t this.
我必须承认我是正则表达式的n00b。 到目前为止,我发现了以下内容:
^(.*)?[0-9](.*)?
然而,如果例如有一个号码,它也会匹配。第三个词但不是第一个词。
我看到^(.*)?
匹配从行首开始的任何内容,以及包含该数字的第3个单词之前的任何文本。
为了使它更复杂,第一个单词也可以包含特殊字符(?/&%$"§
或任何其他字符)。
如果我会使用^[a-zA-Z]?
而不是^(.*)?
这样的字符类,就我所能看到的一切都会好的,但它不会捕获空格或特殊字符,也不会数字前面有多个字符。
答案 0 :(得分:3)
您可以使用:
^\s*\S*[0-9].*
<强>说明:强>
^ # Start of string
\s* # Match optional whitespace at the start of the line
\S* # Match any number of characters except whitespace
[0-9] # Match a digit
.* # Match the rest of the string
答案 1 :(得分:0)
我认为您需要检查空格。尝试:^\s*\S*[0-9]+\S*\s
^
可以表示“除了”以外的任何内容,例如[^9]
除了数字9之外的任何东西,或者它可以表示从字符串的开头匹配,就像它在这里一样。
\s*
表示匹配可选空格,即\s
匹配空格,*
为零或更多次。
\S*
匹配可选的非空格。这是除换行符,回车符,空格和制表符之外的任何字符。
[0-9]+
匹配1个或更多数字,即[0-9]
是匹配数字,+
是1次或更多次。
\S*
- 与上面的\S*
相同。
\s
匹配1个空白字符。