RegexFunctions.java

package eu.javaexperience.text;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

import eu.javaexperience.generic.annotations.Ignore;
import eu.javaexperience.interfaces.simple.getBy.GetBy1;

public class RegexFunctions
{
	public static GetBy1<String, String> regexReplace(String pattern, final boolean once, final String replace)
	{
		final Pattern p = Pattern.compile(pattern);
		return new GetBy1<String, String>()
		{
			@Override
			public String getBy(String a)
			{
				StringBuffer sb = new StringBuffer();
				boolean permit = true;
				Matcher m = p.matcher(a);
				
				while(permit && m.find())
				{
					m.appendReplacement(sb, replace);
					
					if(once)
					{
						permit = false;
					}
				}
				m.appendTail(sb);
				return sb.toString();
			}
		};
	}
	
	@Ignore
	public static GetBy1<String, String> findAndExamine(final Pattern pattern)
	{
		return new GetBy1<String, String>()
		{
			@Override
			public String getBy(String a)
			{
				Matcher m = pattern.matcher(a);
				if(m.find())
				{
					return m.group();
				}
				
				return null;
			}
		};
	}
	
	public static GetBy1<String, String> findAndExamine(String pattern)
	{
		return findAndExamine(Pattern.compile(pattern));
	}
	
	@Ignore
	public static GetBy1<String, String> findAndExamineNamed(final Pattern pattern, final String grpName)
	{
		return new GetBy1<String, String>()
		{
			@Override
			public String getBy(String a)
			{
				Matcher m = pattern.matcher(a);
				if(m.find())
				{
					return m.group(grpName);
				}
				
				return null;
			}
		};
	}
	
	public static GetBy1<String, String> findAndExamineNamed(String pattern, String grpName)
	{
		return findAndExamineNamed(Pattern.compile(pattern), grpName);
	}
}