我需要分别捕获文本文件中的每个单词。 这些单词可以像普通单词,数字,包含连字符的数字等。
我对一个单词的标准是,无论它是什么,它将在另一个单词之前被一个空格分隔,或者该单词将以点结尾。
我在C#中尝试使用@"(\w+)+"
,但它无法捕获上面定义的每个单词以及+-.,!@#$%^&*();\/|<>"'
之类的内容。
目的是创建一个独特的单词列表。
答案 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
这匹配一个字边界,然后是一个或多个非边界字符,直到下一个字边界。