tôi đã sử dụng những gợi ý được đăng ở đây và đã đưa ra các regex rằng vỉa để đạt được những gì tôi muốn làm:
(?<Sentence>\S.+?(?<Terminator>[.!?]|\Z))(?=\s+|\Z)
tôi đã sử dụng Expresso để đến với:
// using System.Text.RegularExpressions;
/// <summary>
/// Regular expression built for C# on: Sun, Dec 27, 2009, 03:05:24 PM
/// Using Expresso Version: 3.0.3276, http://www.ultrapico.com
///
/// A description of the regular expression:
///
/// [Sentence]: A named capture group. [\S.+?(?<Terminator>[.!?]|\Z)]
/// \S.+?(?<Terminator>[.!?]|\Z)
/// Anything other than whitespace
/// Any character, one or more repetitions, as few as possible
/// [Terminator]: A named capture group. [[.!?]|\Z]
/// Select from 2 alternatives
/// Any character in this class: [.!?]
/// End of string or before new line at end of string
/// Match a suffix but exclude it from the capture. [\s+|\Z]
/// Select from 2 alternatives
/// Whitespace, one or more repetitions
/// End of string or before new line at end of string
///
///
/// </summary>
public static Regex regex = new Regex(
"(?<Sentence>\\S.+?(?<Terminator>[.!?]|\\Z))(?=\\s+|\\Z)",
RegexOptions.CultureInvariant
| RegexOptions.IgnorePatternWhitespace
| RegexOptions.Compiled
);
// This is the replacement string
public static string regexReplace =
"$& [${Day}-${Month}-${Year}]";
//// Replace the matched text in the InputText using the replacement pattern
// string result = regex.Replace(InputText,regexReplace);
//// Split the InputText wherever the regex matches
// string[] results = regex.Split(InputText);
//// Capture the first Match, if any, in the InputText
// Match m = regex.Match(InputText);
//// Capture all Matches in the InputText
// MatchCollection ms = regex.Matches(InputText);
//// Test to see if there is a match in the InputText
// bool IsMatch = regex.IsMatch(InputText);
//// Get the names of all the named and numbered capture groups
// string[] GroupNames = regex.GetGroupNames();
//// Get the numbers of all the named and numbered capture groups
// int[] GroupNumbers = regex.GetGroupNumbers();
Nguồn
2009-12-27 13:07:19
@Luke: Nó trông giống như bạn muốn có một ngắt dòng rõ ràng giữa "nguyên nhân" và "câu" trong văn bản mẫu của bạn, nhưng nó không được hiển thị. Tôi buộc nó hiển thị bằng cách chèn hai dấu cách trước dòng cấp. Đó là cách bạn muốn nó nhìn, phải không? –
Có, bạn đang phát hiện! Cảm ơn bạn đã sửa lỗi này. Silly me (vẫn là một noob). –