正则表达式文本文件中的任何单词

时间:2015-11-13 15:51:05

标签: c# regex

我需要分别捕获文本文件中的每个单词。 这些单词可以像普通单词,数字,包含连字符的数字等。

我对一个单词的标准是,无论它是什么,它将在另一个单词之前被一个空格分隔,或者该单词将以点结尾。

我在C#中尝试使用@"(\w+)+",但它无法捕获上面定义的每个单词以及+-.,!@#$%^&*();\/|<>"'之类的内容。

目的是创建一个独特的单词列表。

4 个答案:

答案 0 :(得分:2)

尝试DEMO

([^\s\.]+)\.?

表示:

(    - beginning of capture
 [   - one of..
  ^  - none of the following characters
  \s - a space character (tab, space etc)
  \. - a literal dot
 ]
 +   - one or more of the previous block (in []) in a greedy way
)    - close of capture block
\.   - a literal dot
?    - zero or one

哪个匹配多个非空格(而不是点),它们可以以点结尾(但永远不会包含它)。

答案 1 :(得分:2)

您希望[^.\s]+匹配任何非空格或点的字符序列。

答案 2 :(得分:0)

使用string.split()并将分隔符定义为空格,点和/或新行。 你也可以使用任何正则表达式作为分隔符。

https://msdn.microsoft.com/en-us/library/b873y76a(v=vs.110).aspx

答案 3 :(得分:0)

正则表达式包含一个&#34;字边界&#34;字符(class CustomersController < ApplicationController before_action :set_customer, only: [:update, :destroy] def index @customers = Customer.all end def create @customer = Customer.new(customer_params) if @customer.save render json: @customer else render json: @customer.errors, status: :unprocessable_entity end end # note that there was a third end here def update if @customer.update(customer_params) render json: @customer else render json: @customer.errors, status: :unprocessable_entity end end def destroy @customer.destroy head :no_content end private def customer_params params.require(:customer).permit(:name, :lastname, :mobile, :phone, :email, :address, :zip, :city, :state) end def set_customer @customer = Customer.find(params[:id]) end end # end moved to here )。这包括空格和标点符号。由于您的标准包括数字(仅限ASCII吗?),这可能是您特定案例的最佳解决方案。

您可以尝试使用此正则表达式:\b

这匹配一个字边界,然后是一个或多个非边界字符,直到下一个字边界。