import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Example {
public static void main(String[] args) {
final String regex = "[\\s]*([\\/+\\s\\w@'\\,\\.()\\-\\*\\-\\>\\<\\_\\\"]*)?[\\n]*UFUNCTION[(]([\\w<>\\s\\(\\)\\=\\,\\\"\\| ]*|\\n]*)[\\)]\\n\\s(virtual)*\\s*(static)*\\s*(\\w+\\&?\\*?)\\s(\\w+)[(]([\\w<>\\s,&\\*]*|\\n]*)[)][\\s]*([const]*)";
final String string = "// Fill out your copyright notice in the Description page of Project Settings.\n\n"
+ "#pragma once\n\n"
+ "#include \"CoreMinimal.h\"\n"
+ "#include \"GM_Stepper.h\"\n"
+ "#include \"Kismet/BlueprintFunctionLibrary.h\"\n"
+ "#include \"StepperTypes.h\"\n"
+ "#include \"Encoder/EncodeData.h\"\n"
+ "#include \"Components/TextBlock.h\"\n"
+ "#include \"BFL_Stepper.generated.h\"\n\n\n\n"
+ "/**\n"
+ " * \n"
+ " */\n"
+ "UCLASS()\n"
+ "class STEPPER_API UBFL_Stepper : public UBlueprintFunctionLibrary\n"
+ "{\n"
+ " GENERATED_BODY()\n\n"
+ "public:\n"
+ " // Returns a copy of the current rendering LogPacket\n"
+ " // For use ONLY during render time\n"
+ " // Will be invalid otherwise\n"
+ " UFUNCTION(BlueprintPure, Category = \"Stepper|Core\")\n"
+ " static FLogPacket& GetCurrentLogPacket(bool& Success);\n\n"
+ " // Updates the log packet sources in memory\n"
+ " UFUNCTION(BlueprintCallable, Category = \"Stepper|Core\")\n"
+ " static bool UpdatePacket(FLogPacket NewPacket);\n\n"
+ " // Returns a copy of the requested MetaData from the relevant core\n"
+ " UFUNCTION(BlueprintPure, Category = \"Stepper|Core\")\n"
+ " static FGenericMetaTag GetMetaTag(FLogPacket ReferencePacket, FName MetaTag, bool& bIsValid);\n"
+ " \n"
+ " // Returns a copy of the requested MetaData from the supplied packet\n"
+ " UFUNCTION(BlueprintPure, Category = \"Stepper|Core\")\n"
+ " static FGenericMetaTag GetMetaTag_Explicit(FLogPacket ReferencePacket, FName MetaTag, bool& bIsValid);\n\n"
+ " // Returns a logLine for this LogPacket by a LineId\n"
+ " UFUNCTION(BlueprintPure, Category = \"Stepper|Core\")\n"
+ " static bool GetLogLineInId(FLogPacket ReferencePacket, int32 inId, FActionLine& LineData);\n\n"
+ " // Returns a logLine for this LogPacket by seeking from a specific line\n"
+ " UFUNCTION(BlueprintPure, Category = \"Stepper|Core\")\n"
+ " static bool GetNextActionByType(FLogPacket ReferencePacket, FAction RefAction, FName NextActionName, bool bShouldDebug, FActionLine& Action);\n"
+ " \n"
+ " // Updates the LogPacket in memory and text file \n"
+ " UFUNCTION(BlueprintCallable, Category = \"Stepper|Core\")\n"
+ " static void UpdateGenericTag(FLogPacket ReferencePacket, FGenericMetaTag MetaTag);\n\n"
+ " // Get the saved user settings\n"
+ " UFUNCTION(BlueprintPure, Category = \"Stepper|User Settings\")\n"
+ " static bool GetUserSettings(FUserSettings& Settings);\n\n"
+ " // Get the saved capture resolution\n"
+ " UFUNCTION(BlueprintPure, Category = \"Stepper|User Settings\")\n"
+ " static FIntPoint GetCaptureResolution();\n\n"
+ " // Get the saved output resolution\n"
+ " UFUNCTION(BlueprintPure, Category = \"Stepper|User Settings\")\n"
+ " static FIntPoint GetOutputResolution();\n\n"
+ " // Get the root output folder for this log\n"
+ " UFUNCTION(BlueprintPure, Category = \"Stepper|User Settings\")\n"
+ " static FString GetLogOutputFolder();\n\n"
+ " // Gets the saved resources folder\n"
+ " UFUNCTION(BlueprintPure, Category = \"Stepper|User Settings\")\n"
+ " static FString GetResourcesFolder();\n\n"
+ " // Get a reference to the active UStepperObject\n"
+ " // Can be nullptr\n"
+ " UFUNCTION(BlueprintPure, Category = \"Stepper|Statics\")\n"
+ " static UStepperCore* GetStepper();\n\n"
+ " // Get the currently rendered stepper frame number\n"
+ " // Return -1 if not rendering\n"
+ " UFUNCTION(BlueprintPure, Category = \"Stepper|Statics\")\n"
+ " static int32 GetStepperFrame();\n\n"
+ " // Checks if a file is of type \"png\", \"jpg\", \"mp4\" or \"mov\"\n"
+ " UFUNCTION(BlueprintPure)\n"
+ " static bool bIsMediaFile(FString FileName);\n\n"
+ " // Get the language of the inputted log packet\n"
+ " UFUNCTION(BlueprintPure)\n"
+ " static FString GetLogLanguage(FLogPacket LogPacket);\n\n"
+ " // Get the packet's framerate\n"
+ " UFUNCTION(BlueprintPure, meta=(CompactNodeTitle=\"FR\", Keywords = \"FrameRate, Frame, Rate\"))\n"
+ " static FFrameRate GetPacketFrameRate(FLogPacket Packet);\n"
+ " // Get the rendered framerate\n"
+ " UFUNCTION(BlueprintPure, meta=(CompactNodeTitle=\"FR\", Keywords = \"FrameRate, Frame, Rate\"))\n"
+ " static bool GetRenderedFrameRate(FFrameRate& FrameRate);\n"
+ " // Get the packet's start timecode\n"
+ " UFUNCTION(BlueprintPure, meta=(CompactNodeTitle=\"STC\", Keywords = \"Timecode, Time, Code, TC\"))\n"
+ " static FTimecode GetPacketStartTimecode(FLogPacket Packet);\n"
+ " // Get the packet's end timecode\n"
+ " UFUNCTION(BlueprintPure, meta=(CompactNodeTitle=\"ETC\", Keywords = \"Timecode, Time, Code, TC\"))\n"
+ " static FTimecode GetPacketEndTimecode(FLogPacket Packet);\n"
+ " //Get the timecode data struct from the currently loaded LogPackt's MetaData\n"
+ " UFUNCTION(BlueprintCallable, BlueprintPure, Category = \"Stepper|XML|Helpers\")\n"
+ " static FTimecodeData GetPacketTimecodeData(FLogPacket Packet);\n\n\n"
+ " UFUNCTION()\n"
+ " static bool bIsDllLoaded(FString DllName);\n\n"
+ " // Get a reference to the active game mode\n"
+ " UFUNCTION(BlueprintCallable)\n"
+ " static AGM_Stepper* GetGameMode();\n\n"
+ " UFUNCTION()\n"
+ " static ELogRenderStatus QtChangeFile(FLogPacket& LogPacket, FCameraData& CameraData, int32 Iteration);\n"
+ " UFUNCTION()\n"
+ " static ELogRenderStatus QtChangeFile_Scatter(FLogPacket& LogPacket, FCameraData& CameraData, int32 ScatterIndex, FName ScatterTag, FTimecode ClipTc, int32 Iteration);\n"
+ " UFUNCTION()\n"
+ " static ELogRenderStatus RunQtBat(FString BatLoc, FString Dir);\n\n"
+ " UFUNCTION()\n"
+ " static int CheckLine(FString Line);\n"
+ " // Break a TextBox's text into lines\n"
+ " UFUNCTION(BlueprintCallable)\n"
+ " static void BreakTextBox(UTextBlock* TextBox, int32 MaxLineSize);\n\n"
+ " //Takes a snapshot of a widget and returns it as a render target\n"
+ " UFUNCTION(BlueprintCallable, Category = \"Stepper|Helpers\", meta=(DisplayName=\"Render Target From Widget With Alpha\"))\n"
+ " static UTextureRenderTarget2D* RtFromWidget_Alpha(UUserWidget* const Widget, FVector2D Size);\n\n"
+ " //Adds a prefix 0 for numbers below 10 (i.e 6 -> 06)\n"
+ " UFUNCTION(BlueprintCallable, BlueprintPure, Category = \"Stepper|Helpers\")\n"
+ " static void IntToPaddedString(int32 Int, FString& PaddedString);\n\n\n"
+ " \n"
+ "};\n";
final Pattern pattern = Pattern.compile(regex, Pattern.MULTILINE);
final Matcher matcher = pattern.matcher(string);
while (matcher.find()) {
System.out.println("Full match: " + matcher.group(0));
for (int i = 1; i <= matcher.groupCount(); i++) {
System.out.println("Group " + i + ": " + matcher.group(i));
}
}
}
}
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for Java, please visit: https://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html